在这种情况下内存泄漏?一遍又一遍地使用新关键字

Zeb*_*ish -2 c++ memory heap pointers memory-leaks

我对内存泄漏非常谨慎,所以我认为我已经验证了这一点.在下面的例子中会出现内存泄漏吗?我的直觉是肯定的.

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;
}
Run Code Online (Sandbox Code Playgroud)

在heapeach时间,ptrToInts会在单独的内存中创建20个单独的新int?

另外,另一个问题是,如果不是析构函数,是否会释放动态分配的内存?看到类的生命周期是程序的持续时间,它会清除所有"新"内存吗?

编辑:谢谢你的回答.我问这个的原因是因为我试图绕过调用new并删除WadProc每次基本上调用Raw Input,这就是MSDN告诉你这样做的方式.似乎非常低效.

Ste*_*hen 7

只要重新分配指针而不使用delete[]在堆上取消分配已分配的内存,就会产生内存泄漏.如果你循环播放aFunction()它,就会在每次调用时重新分配指针.

至于你的第二个问题,你的析构函数将只delete[]分配给指针的最后一个数组.