在析构函数c ++中释放多个缓冲区

时间:2012-07-20 21:00:19

标签: c++

我的班级中有一个指针数组。 我正在使用这些指针来分配一定数量的缓冲区。

在析构函数中,我想释放这段记忆,但似乎我做错了。

   //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];
   }

出于某种原因,这似乎不起作用。 如果我在析构函数中注释掉那些行,那么程序运行正常,如果我用那些看似冻结的行运行它。

2 个答案:

答案 0 :(得分:2)

尝试使用一些静态分析工具,例如cppcheck(它是免费的,多平台和开源的),并针对您的代码运行它。

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

答案 1 :(得分:1)

您发布的代码似乎没有任何问题,因此问题必须存在于您发布的代码中。

我的赌注是关于一些越界访问,这会破坏堆管理员所需的簿记信息。