C++ 删除动态矩阵
c++ delete 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;
}
这要释放内存:
if (nw) {
for (int w = 0; w < V; w++) {
if (nw[w])
delete nw[w];
}
程序编译并运行,但是,当它尝试释放内存时,失败。程序并不总是在相同的 w 值下失败。
有什么想法吗?
当new[]
使用 delete[]
时,请更改为:
delete[] nw[w];
并记得delete[] nw;
.
请注意,数组中每个int
的单独0
赋值可以替换为:
nw[w] = new int[K](); // This value initializes the array, in this
//^^ case sets all values to zero.
您可以避免使用 std::vector<std::vector<int>>
显式处理动态分配:
std::vector<std::vector<int>> nw(V, std::vector<int>(K));
我认为你的意思是使用delete[]
,而不是delete
:
for (int w = 0; w < V; w++)
delete[] nw[w];
delete[] nw;
相关文章:
- 在对象指针上调用 Delete 是否会递归删除其动态分配的成员
- 删除动态数组时未定义标识符
- 动态分配列表 - 创建一个函数,用于删除所有包含偶数值的元素
- 删除包含包含动态对象的 STL 容器的智能指针
- 如何在析构函数中删除C++中动态分配的数组?
- 在动态数组中添加/删除C++元素
- 删除动态数组上不带方括号的内容
- 无法删除布尔动态内存分配
- 如何在C++中删除动态数组的列
- 删除类成员的动态分配内存的最佳方法是什么
- 尝试从动态分配的二维数组 C++ 中读取值时出现分段错误,并在尝试删除它时给出 munmap_chunk():
- C++ 在析构函数调用之前删除的动态成员数组
- 当动态库中的指针仍被其他库使用时,如何删除该指针
- 如何删除在另一个函数中初始化的动态分配数组
- 动态记忆的删除是如何真正起作用的
- 使用私有析构函数删除动态分配的对象
- 删除动态数组会弄乱我的结果
- 从链表中删除值/删除未动态分配的值
- 删除动态数组会导致运行时错误
- 是否也可以在数组中动态删除内存?