删除2D_Array错误
Delete 2D_array error
我在这里尝试删除2D数组而没有结果。
我有这个结构:
struct Node {
char Object[32];
int Link_num;
char **Links;
Node *Next;
};
在我正在动态创建2D数组的功能之一中,如下所示:
record->Links = new char*[record->Link_num];
for (int i = 0; i < record->Link_num; i++) {
record->Links[i] = new char[16];
cin.getline(record->Links[i], 16, 'n');
}
现在,当我试图在某些删除函数中删除数组时:
if (ptr->Link_num > 0) {
for (int i = ptr->Link_num; i > 0; --i)
delete[] ptr->Links[i];
//delete[] ptr->Links;
}
我得到此错误:
Exception thrown at 0x50EE436B (ucrtbased.dll) in Test_10.exe: 0xC0000005: Access violation reading location 0xFDFDFDED. occurred.
for (int i = ptr->Link_num; i > 0; --i)
,循环是从ptr->Link_num
到1
(即[ptr->Link_num, 0)
(执行的。但是数组的范围是[0, ptr->Link_num)
,不包含ptr->Link_num
。因此,您已经摆脱了阵列的范围。这种行为是不确定的,您很幸运地为此遇到错误。
将其更改为
for (int i = ptr->Link_num - 1; i >= 0; --i)
delete[] ptr->Links[i];
delete[] ptr->Links;
或(您不需要以相反顺序循环(
for (int i = 0; i < ptr->Link_num; ++i)
delete[] ptr->Links[i];
delete[] ptr->Links;
相关文章:
- 解析问题 - 预期的非限定 ID - #include <array> 编译错误
- 通过 host() 从 af::array 检索数据会导致错误的数据
- C++ 错误:"array must be initialized with a brace-enclosed initializer"
- 我正在使用dev c ++,但收到错误(C++98'array'必须由构造函数初始化)
- 错误"invalid types ... for array subscript"是什么意思?
- 尝试使用 Array 类的模板构造整数数组时,错误:为什么数组类型"int [5]"不可分配,
- 编译器错误:"std::array<...>::~array()"被隐式删除
- 错误:数字常数之前的预期无限制ID:std :: array和std ::向量大小分配
- &(array+1) 在 &arr 工作时给出编译错误
- 使用字符串文本初始化构造函数中的 std::array<char,x> 成员。海湾合作委员会错误?
- 节点.JS,C++模块:为什么当我尝试调用本地的长度方法时出现段错误<Array>?
- std::array不再发生初始化程序语法错误
- VC++ 2010 "array is not a member of std"错误
- 错误:此处可能未在C++代码中定义类型 'array'
- 错误:“boost::array”不是一种类型
- 为什么我会收到错误"Array type Item[1000] is not assignable"?
- 错误:'const std::array<int, 3u>&'不是类、结构或联合类型
- C++代码::阻止"#include <array>"导致错误
- C++分段错误std::array
- 获取错误"array bound is not an integer constant before ']' token"