Bes*_*sch 5 c++ string memory-management
据我所知,std::string当你调用c_str()/ data()方法时会创建一个内容的ident数组副本(使用/ out终止NUL-char,这里没关系).无论如何,该对象是否也负责释放这个阵列或者我必须这样做?
简而言之:
std::string hello("content");
const char* Ptr = hello.c_str();
// use it....
delete[] Ptr; //// really ???
Run Code Online (Sandbox Code Playgroud)
我只是想在内存分配方面保持安全.
不,你不需要释放ptr指针.
ptr指向位于内部位置某处的不可修改的字符串(实际上这是编译器的实现细节).
参考:
const char* c_str ( ) const;
Run Code Online (Sandbox Code Playgroud)
获取C字符串等效项
生成以字符串对象为内容的以null结尾的字符序列(c-string),并将其作为指向字符数组的指针返回.
将自动附加终止空字符.
返回的数组指向一个内部位置,其中包含此字符序列所需的存储空间以及终止的空字符,但此数组中的值不应在程序中修改,只保证在下次调用之前保持不变.字符串对象的非常量成员函数.