G++ 发出警告,要求删除一个代码的数组,但不删除另一个代码的数组
g++ gives warning for deleting an array for one code but not the other
我来自Java背景,仍然对指针和东西的工作原理感到困惑。我有两个例子。
int arr[10] = {};
delete[] arr;
在这里,我的编译器抛出有关删除arr
的警告。
int *arr = new int[4];
delete[] arr;
但它不会在这里发出警告吗?为什么?
在您的第一个代码中,arr
是静态分配的(在堆栈上(,并且在超出范围时将自动释放。对静态分配的变量调用delete[]
是没有意义的。
在第二个代码中,arr
是在堆上动态分配的,并且在超出范围时不会自动释放,因此需要对其调用delete[]
。
在此处获取有关正确使用删除的更多信息:C++以及何时使用删除
相关文章:
- 为什么示例代码访问IUnknown中已删除的内存
- 你能检查一下为什么在这个代码中从链接列表中删除项目不起作用吗
- 从 C 样式字符串中删除子字符串 "in place" 在C++代码中
- 是否可以使用 C++ 中的模板减小删除代码大小
- 删除C++继承中虚拟类成员的代码重复
- 当我从下面的代码中删除关键字 virtual 时,它可以正常工作,否则会出现错误。在这里"virtual"字的意义是什么?
- 删除继承中的代码重复?
- 从排序数组中删除重复项,具有不同代码方式的相同解决方案具有不同的输出
- G++ 发出警告,要求删除一个代码的数组,但不删除另一个代码的数组
- 删除原子多线程代码中的容器
- 使用 ostream 变量删除代码重复
- 可视代码 删除函数括号内的空格
- Qt创建者-如何删除Clang代码模型
- 有没有一种预处理器的方法可以从调试符号中删除代码段
- 为什么在const和非const方法中删除代码重复不是不确定的行为
- While 循环 - 如何删除代码重复
- enable_if如何用于删除代码
- 是否可以使用十六进制编辑器从exe文件中删除代码?(c++)
- 为什么第一个值是2814,而不是在我删除代码块之后
- 使用-O3或-Ofast编译基准代码现实吗?还是会删除代码