g++对删除一个数组的代码而不删除另一个数组的代码发出警告。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了g++对删除一个数组的代码而不删除另一个数组的代码发出警告。相关的知识,希望对你有一定的参考价值。
对不起,如果这是一个愚蠢的问题,我是java背景的,但对指针之类的东西如何工作还是很困惑。我有两个例子。
int arr[10] = {};
delete[] arr;
这里,我的编译器抛出了一个关于删除 arr
.
int *arr = new int[4];
delete[] arr;
但这里没有抛出警告?为什么会这样?
答案
在你的第一段代码中。arr
是静态分配的(在堆栈上),当超出作用域时将自动释放。调用 delete[]
在静态分配的变量上是没有意义的。
在你的第二段代码中。arr
是在堆上动态分配的,并且会在 不 会自动被释放,因此需要调用 delete[]
上。
在这里获取更多关于删除的正确用法的信息。C++和何时使用delete
以上是关于g++对删除一个数组的代码而不删除另一个数组的代码发出警告。的主要内容,如果未能解决你的问题,请参考以下文章