std :: stringに変換した後にchar *のポイント文字列のメモリを解放できますか? 例:これを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? */
std :: stringに変換した後にchar *のポイント文字列のメモリを解放できますか? 例:これを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