-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(它是免费的、多平台的和开源的)并针对您的代码运行它。

如果您的代码运行到 Visual Studio(一个非常好的工具),您甚至可以尝试PVS Studio 。

于 2012-07-20T22:28:37.307 回答
1

您发布的代码似乎没有任何问题,因此问题一定出在您发布的代码中。

我敢打赌,某些越界访问会破坏堆管理器所需的簿记信息。

于 2012-07-20T21:12:41.160 回答