c ++删除动态矩阵

use*_*996 1 c++ memory-management dynamic matrix

我有这个代码来分配和初始化:

nw = new int*[V];

for (w = 0; w < V; w++) {

nw[w] = new int[K];

for (k = 0; k < K; k++) 

  nw[w][k] = 0;
}
Run Code Online (Sandbox Code Playgroud)

这是为了释放记忆:

if (nw) {
 for (int w = 0; w < V; w++) {  
  if (nw[w]) 
delete nw[w];      
}
Run Code Online (Sandbox Code Playgroud)

程序编译并运行,但是,当它尝试释放内存时,会失败.该程序并不总是以相同的w值失败.

有任何想法吗?

hmj*_*mjd 6

new[]使用delete[],所以更改为:

delete[] nw[w];
Run Code Online (Sandbox Code Playgroud)

并记住delete[] nw;.

请注意,数组中0每个的单独赋值int可以替换为:

nw[w] = new int[K](); // This value initializes the array, in this
                //^^     case sets all values to zero.
Run Code Online (Sandbox Code Playgroud)

您可以避免显式处理动态分配std::vector<std::vector<int>>:

std::vector<std::vector<int>> nw(V, std::vector<int>(K));
Run Code Online (Sandbox Code Playgroud)