-1

クラスのメンバーとしてポインタの配列があります。これらのポインターを使用して、特定の数のバッファーを割り当てています。

デストラクタでこのメモリを解放したいのですが、何か間違ったことをしているようです。

   //In the Constructor
   for(int i = 0; i< NUM_OF_BUFFERS; i++)
   {
      mBuffer[i] = new Uint8[BUFFERSIZE];
      memset(mBuffer[i], 0, BUFFERSIZE);
      mBufferState[i] = NULL;
   }



   //In the destructor
   for (int i = 0; i < NUM_OF_BUFFERS; i++)
   {
      delete[] mBuffer[i];
   }

何らかの理由で、これは機能しないようです。デストラクタのこれらの行をコメントアウトしている場合、プログラムは正常に実行されます。これらの行を使用して実行すると、フリーズするように見えます。

4

2 に答える 2

2

cppcheck(無料のマルチプラットフォームでオープンソース)のような静的分析ツールを使用して、コードに対して実行してみてください。

コードがVisualStudio(非常に優れたツール)で実行される場合は、PVSStudioを試すこともできます。

于 2012-07-20T22:28:37.307 に答える
1

投稿したコードに問題はないようです。したがって、問題は投稿しなかったコードのどこかにあるはずです。

私の賭けは、ヒープマネージャーが必要とする簿記情報を破壊している範囲外のアクセスにあります。

于 2012-07-20T21:12:41.160 に答える