LPSTR 変数があるとします。変数を使用した後にメモリを解放するにはどうすればよいですか。それは...ですか
LPSTR szFileName = GetSBCSBuffer(sFilePath); // sFilePath is a CString
delete szFileName;
また
delete []szFileName;
親切なアドバイス
LPSTR 変数があるとします。変数を使用した後にメモリを解放するにはどうすればよいですか。それは...ですか
LPSTR szFileName = GetSBCSBuffer(sFilePath); // sFilePath is a CString
delete szFileName;
また
delete []szFileName;
親切なアドバイス
を使用してメモリが割り当てられた場合は、 を使用new char[SIZE]
して解放する必要がありますdelete []
。
GetSBCSBuffer の詳細を知らなければ、その質問に答えることはできません。関数を書いた人がコードやドキュメントを残してくれることを願っています。そうすれば、文字列がどこから来たのかがわかります。どちらの選択肢も正しくない可能性があります。GetSBCSBuffer の作成者は、別のメモリ アロケータを使用したか、sFilePath 内部の場所へのポインタを返した可能性があります。最後のケースでは、デロケーターを呼び出すのは非常に悪いことです。
Elder_george's answerへのコメントで、あなたが自分で質問に答えたことに気づきました。実装は new[] を使用したため、delete[] が必要です。