当我将它分配给std :: string时,我可以释放char*字符串的内存吗?

SSC*_*SSC 6 c++ string free stdstring

我将它转换为std :: string后,是否可以释放char*指向字符串的内存?例如:

char* c_string;
c_string = strdup("This is a test");
std::string cpp_string;
cpp_string(c_string);
free(c_string); /* can I call free here? */
Run Code Online (Sandbox Code Playgroud)

ick*_*fay 10

是.std::string复制底层C字符串.

来源:C++ 11草案N3376的§21.4.2的表67.


Jon*_*art 5

是的。该std::string构造使得传递给它的字符串的副本。

请参阅此页上的构造函数 #4 。

string (const char* s);    // from c-string
Run Code Online (Sandbox Code Playgroud)

来自 c 字符串

复制 s 指向的空终止字符序列(C 字符串)。