linux下面的stl版本(或者说sgi版本)std::string,如果内存池相同的话,是引用计数的(大部分情况下是使用默认内存池,所以内存池肯定是一样的)。
std::string b = "aaa";
std::string a(b);
这样做会导致引用计数,即a b两个对象指向的实际是同一个内存块。
此时如若直接操作 a.c_str()或a.data()(当然平时很少这样,但我在程序中这么做了)。结果可想而知,呵呵。
打个标签,引以为戒。
linux下面的stl版本(或者说sgi版本)std::string,如果内存池相同的话,是引用计数的(大部分情况下是使用默认内存池,所以内存池肯定是一样的)。
std::string b = "aaa";
std::string a(b);
这样做会导致引用计数,即a b两个对象指向的实际是同一个内存块。
此时如若直接操作 a.c_str()或a.data()(当然平时很少这样,但我在程序中这么做了)。结果可想而知,呵呵。
打个标签,引以为戒。