我可以在將char *指向的字符串轉換爲std :: string後釋放內存嗎? 例如:當我將它分配給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? */
我可以在將char *指向的字符串轉換爲std :: string後釋放內存嗎? 例如:當我將它分配給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? */
vs2012很滿意上面的代碼,除了'std:string''。 – gongzhitaao
@ gongzhitaao只是因爲代碼編譯並不意味着它是正確的。你仍然可以依靠未定義的行爲。而'std :: string'在C++中完全有效。你可能只是忘了包含''。 –
@編譯並正確運行。我想如果它不能被釋放,那麼會出現一些運行時錯誤。更重要的是,我的意思是'std:string''而不是''std :: string''。看錯字? – gongzhitaao