在将它转换为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? */
答案 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)。