7

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

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? */
4

2 回答 2

12

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

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

于 2013-04-12T04:28:04.400 回答
5

是的。构造std::string函数复制传递给它的字符串。

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

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

来自 c 字符串

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

于 2013-04-12T04:28:18.617 回答