新しいキーワードを繰り返し使用すると、私はメモリリークに非常に注意しています。次の例では、メモリリークがありますか?私の腸の本能ははいと言います。この状況でメモリリークが発生しましたか?
class Handler // Class definition
{public:
~Handler();
int* ptrToInts;
};
Handler::~Handler() // Class destructor
{
delete[] ptrToInts;
}
Handler handler; // Global object
void aFunction()
{
handler.ptrToInts = new int[20];
}
int main()
{
bool quit = false;
while(!quit)
{
aFunction();
}
return 0;
}
ptrToIntsは、heapeach時間に別々のメモリに20個の別々の新しいintを作成するでしょうか?
また、デストラクタ用でない場合、動的に割り当てられたメモリを解放するかどうかが問題です。クラスの生存期間はプログラムの継続時間であるかのように見て、すべての「新しい」メモリーのクリーンアップを行いますか?
編集:ありがとうございました。私がこれを求めている理由は、WndProcが基本的にRaw Inputのために呼び出されるたびに、新しい呼び出しと削除を呼び出そうとしているからです。これはMSDNがあなたに指示する方法です。非常に非効率だと思われる。
:
なぜこのようHandlerクラスを実装していません。彼らはバランスを取る必要があります。 –
あなたのプログラムにメモリリークがあるかどうか(そしてどこで)どこにあるのかを教えてくれるツール(http://valgrind.org/など)を使用してください。 – simpel01
valgrindはMS Windowsプラットフォームでは動作しません。 – cwschmidt