Jes*_*ood 25
查看我找到的libstdc ++文档(有关详细信息,请参阅链接):
字符串如下所示:
[_Rep]
_M_length
[basic_string<char>] _M_capacity
_M_dataplus _M_refcount
_M_p ----------------> unnamed array of char_type
Run Code Online (Sandbox Code Playgroud)
所以,是的,它被重新计算.另外,从这里的讨论:
是的,std :: string在某些时候会被作为非引用计数,但由于非引用计数的字符串在C++ 98中也是有效的,一个选项是切换到非引用计数的字符串对于-std = c ++ 98和-std = c ++ 11模式.我不是说会发生什么,但可能会发生.
因此,似乎有计划将其改为符合(我不知道进展如何).
更新
正如emsr在评论中指出的那样,目前有一个非引用计数扩展名称vstring.h
,并且似乎它没有被替换的唯一原因std::string
是因为ABI兼容性.这里有一个关于它的问题.
Nic*_*las 22
C++ 11添加了特定的语言,禁止 std::string
被引用计数.如果是的话,那么GCC的C++ 11标准库就会失败.
Dre*_*ann 12
添加一些有用的信息,以便发布此问题.
std::string
将不再用GCC 5的版本引用计数,以满足此C++ 11的要求.
来自https://gcc.gnu.org/gcc-5/changes.html
默认情况下,使用小字符串优化而不是写入时复制引用计数来启用std :: string的新实现.
归档时间: |
|
查看次数: |
10090 次 |
最近记录: |