是否可以"delete"分配"new[1]"的内存,反之亦然?
Is it ok to "delete" memory allocated with "new[1]" and vice-versa?
此代码合法吗?
int * a = new int[1];
delete a;
还是这个?
int * a = new int;
delete [] a;
显然,这似乎是不对的,至少应该劝阻,但它会导致任何实际问题(内存泄漏等等)吗?
匹配组合必须为:-
new; delete;
new[]; delete[];
如果你把这些混在一起,你会得到不明确的行为。我看到代码因此而爆炸。
否。如果你new
,你应该delete
。如果你new[]
,你应该delete[]
。
混合标量和数组(de)分配运算符会导致未定义的行为。delete和delete[]之间定义的区别在于,后者调用数组中所有元素的析构函数。
http://www.cplusplus.com/reference/new/operator%20delete[]/
相关文章:
- 将字符串存储在c++中的稳定内存中
- 在C++中,是否可以基于给定的标识符创建基类的新实例,反之亦然
- C++ 指针的内存地址和指向数组的内存地址如何相同?
- Win32编译器选项和内存分配
- 当vector是tje全局变量时,c++中vector的内存管理
- 带内存和隔离功能的SQLite
- 是否可以通过C++扩展强制多个python进程共享同一内存
- 迭代时从向量和内存中删除对象
- 在C++中打印指向不同基元数据类型的指针的内存地址
- 这个指针和内存代码打印是什么?我不知道是打印垃圾还是如何打印我需要的值
- 多个文件的内存分配错误"在抛出 'std :: bad_alloc' what (): std :: bad_alloc 的实例后终止调用" [C++]
- 为什么示例代码访问IUnknown中已删除的内存
- 如何在C++类内存结构中创建"spacer"?
- 从构造函数抛出异常时如何克服内存泄漏
- malloc() 可能出现内存泄漏
- 如何理解将半精度指针转换为无符号长指针和相关的内存对齐
- 在调用FreeLibrary后,释放动态链接到具有相同版本的CRT堆的DLL的内存
- 如何针对特定情况调试和修复此双自由内存损坏问题
- 是否可以"delete"分配"new[1]"的内存,反之亦然?
- 在OSX上从x86读取共享内存到x64,反之亦然