如何在C++代码中避免这些类型的内存泄漏?

0 c++ pointers memory-leaks

我的C++代码存在内存泄漏问题.我认为这是因为指针分配.例如,我有几行像这样:

**int **p= new int *[g+2];          
for(int k=0;k<=g+1;k++){
    p[k]=new int [n_k[k]+1];
    for(int l=0;l<=n_k[k];l++){
        p[k][l]=0;
    }
}
int **temp= new int *[g+2];     
for(int k=0;k<=g+1;k++){
    temp[k]=new int [n_k[k]+1];
    for(int l=0;l<=n_k[k];l++){
        temp[k][l]=p[k][l];
    }
}
  ...
  ...
 for(int r=0; r<=g+1;r++){
delete []temp[r];
  }
  delete []temp;
  for(int r=0; r<=g+1;r++){
delete []p[r];
  }
   delete []p;
Run Code Online (Sandbox Code Playgroud)

我怎样才能避免这些内存泄漏?我删除指针,但我认为内存泄漏是由于指针分配.我在代码中多次使用过这样的指针赋值.

Alo*_*ave 6

如何在C++代码中避免这些类型的内存泄漏?

  • 停止使用new.
  • 如果可以的话,尽量避免使用动态内存分配.
    如果你必须:
  • 使用标准库容器,如a std::vector
  • 使用RAII(通过智能指针)

  • @saeed查看[此书目列表]中的初学者结束参考部分(http://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list). (2认同)