STL string的引用计数,多个通过拷贝构造和复制操作具有相同值的string共享一块内存,由引用计数该参数保存共享内存的string个数, 通过写时拷贝防止修改共享内存的值.
但是,如果强制转换可能会引起共享内存被修改,例如
std::string str1 = "共享内存";
std::string str2 = str1;
char * tmp = (char *) str2.c_str();
这时,tmp可以更改共享内存,str1中的值可以被改变
STL string的引用计数,多个通过拷贝构造和复制操作具有相同值的string共享一块内存,由引用计数该参数保存共享内存的string个数, 通过写时拷贝防止修改共享内存的值.
但是,如果强制转换可能会引起共享内存被修改,例如
std::string str1 = "共享内存";
std::string str2 = str1;
char * tmp = (char *) str2.c_str();
这时,tmp可以更改共享内存,str1中的值可以被改变
转载于:https://my.oschina.net/u/257448/blog/1530238