0

LPSTR 変数があるとします。変数を使用した後にメモリを解放するにはどうすればよいですか。それは...ですか

LPSTR szFileName = GetSBCSBuffer(sFilePath); // sFilePath is a CString
delete szFileName;

また

delete []szFileName;

親切なアドバイス

4

2 に答える 2

1

を使用してメモリが割り当てられた場合は、 を使用new char[SIZE]して解放する必要がありますdelete []

于 2009-11-06T15:36:05.367 に答える
1

GetSBCSBuffer の詳細を知らなければ、その質問に答えることはできません。関数を書いた人がコードやドキュメントを残してくれることを願っています。そうすれば、文字列がどこから来たのかがわかります。どちらの選択肢も正しくない可能性があります。GetSBCSBuffer の作成者は、別のメモリ アロケータを使用したか、sFilePath 内部の場所へのポインタを返した可能性があります。最後のケースでは、デロケーターを呼び出すのは非常に悪いことです。

Elder_george's answerへのコメントで、あなたが自分で質問に答えたことに気づきました。実装は new[] を使用したため、delete[] が必要です。

于 2009-11-06T16:14:08.930 に答える