在调试模式下释放静态数组时出错
error in releasing the static array in debug mode
为什么在调试模式下释放静态数组时出错?
int main()
{
int ar[] = { 1,2,3,4,5,6,7,8,9 };
//other code
delete(ar);
// or free(ar);
return 0;
}
我使用free
或delete
来释放数组,它在debug mode
中以错误结束
我是否正确使用free
或delete
如何释放数组?
ar[]
不是在堆上分配的,而是在堆栈上的local/,因此不能(也不应该)删除。
功能(或块{}
)退出时,内存被释放。
您只能将delete
与new
或free()
与malloc()
一起使用
delete
运算符和"free"函数只能用于堆上分配的自己的内存。数组已在堆栈上分配,并且当内部实现找不到任何堆结构时,它将崩溃。
此外,delete只能应用于分配了new的内存并且仅在使用malloc、calloc或realloc分配的内存上可用。
最后一件事是,当您对数组使用delete时,使用delete []
这意味着移除将发生在堆叠上的较早偏移上,当数组本身的记录被分配时,否则可能会以内存泄漏或更糟的结束
相关文章:
- 使用 thread 类在 C++ 中构造线程的动态数组时出错
- 将链表转换为指针数组时出错
- 为 NewObjectA() 函数创建 jvalues 的参数数组时出错 - JNI Invocation API
- 基于数组的列表 - 动态数组创建时出错
- 从斐波那契序列 c++ 中的数组中查找正确的元素时出错
- 分段 使用 MPI_Gather 收集字符数组时出错
- 读取字符串字符时出错 - 对于数组中的字符串值
- 声明数组>> int arr[] 时出错;在C++(虽然在 Java 中有效)?
- 在 c++ 中返回一维数组时出错
- 将 2D 数组传递给 C++ 中的函数时出错
- 在 c++ 上创建动态数组时出错
- 尝试返回指向 Visual Studio 中的动态数组的指针时出错C++
- 将 find_if() 与数组一起使用的代码段中出错
- 在比较特定输入中的程序的数组中出错
- 分段 填充数组时出错
- 数组作为函数参数查找数组长度时出错
- C++:用户定义的类型数组出错
- C++中的数组出错
- 我正在创建精灵数组出错
- 在将代码从Windows移植到Linux时删除数组出错