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

时间:2013-04-12 04:25:49

标签: 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? */

2 个答案:

答案 0 :(得分:8)

是。 std::string复制基础C字符串。

资料来源:C ++ 11草案N3376的第21.4.2节表67。

答案 1 :(得分:4)

是。 std::string构造函数生成传递给它的字符串的副本。

请参阅this page上的构造函数#4。

string (const char* s);    // from c-string
   来自c-string

     

复制s指向的以null结尾的字符序列(C-string)。