0

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;

この種のメモリリークを回避するにはどうすればよいですか? ポインターを削除しますが、メモリ リークはポインターの割り当てが原因だと思います。このようなポインター割り当てをコードで数回使用しました。

4

1 に答える 1

6

C++ コードでこの種のメモリ リークを回避するにはどうすればよいですか?

  • 使用を中止してnewください。
  • 可能であれば、動的メモリ割り当てを使用しないでください。
    あなたがしなければならない場合:
  • std::vectorまたはのような標準ライブラリ コンテナを使用する
  • RAIIを使用する(スマート ポインター経由)
于 2013-08-17T06:26:46.313 に答える