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值失败.
有任何想法吗?
当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)
| 归档时间: |
|
| 查看次数: |
9835 次 |
| 最近记录: |