多くのメモリリークに問題があります。
CRTは、たとえば次のコードでリークを示しています。
char *cmd = new char[128];
私は何をすべきか?
char *cmd = new char[128];
delete[] cmd;
上記のコードを使用してVLD(Visual Leak Debugger)で新しいプロジェクトを開始しましたが、まだリークしていると表示されます。
多くのメモリリークに問題があります。
CRTは、たとえば次のコードでリークを示しています。
char *cmd = new char[128];
私は何をすべきか?
char *cmd = new char[128];
delete[] cmd;
上記のコードを使用してVLD(Visual Leak Debugger)で新しいプロジェクトを開始しましたが、まだリークしていると表示されます。
基本的に、使用をやめたらすぐにメモリを解放する必要があります。
これを自動化するための優れた C++ テクニックには、RAIIとスマート ポインターがあります。
また、メモリ リークに関するウィキペディアの記事も考慮してください。
使用する:
std::vector<char> cmd(128);
char* バッファにアクセスする必要があるときはいつでも、次のことができます。
char* memory = &char[0]
メモリは std::vector に対して継続することが保証されているためです。メモリはオブジェクトが所有しているため、削除する必要はありません。これにより、コードも例外に対して安全になります。たとえば、delete [] を実行する前に例外がスローされた場合にメモリ リークが発生しません。
スタックに割り当てたい場合は、C++ 11 の新しい std::array を使用することもできます
配列に関係するメモリリークを避けるために、呼び出す必要がdelete[] arrayVariable;
あります。delete arrayVariable;