动态内存申请 new、delete、delete[]、delete()
2017-07-19 11:42
120 查看
申请单个数据空间
申请多个数据空间
注意!!!
当动态申请的内存是普通变量时不管使用
使用
而使用
int* a = new int(50); //(50)是初始化为50 delete a;
申请多个数据空间
int* a = new int[20]; delete[] a;
注意!!!
当动态申请的内存是普通变量时不管使用
delete还是
delete[],都是能够正常回收内存的,但为什么还要用
delete[]呢?
使用
delete在释放对象数组时就会出现问题,因为使用
delete时只会调用一次析构函数。所以使用
delete时对象数组的数据成员所占用的堆内存会被正常回收,但是如果类内有数据成员动态内存申请(即有个数据成员是指针类型,在构造函数中这个数据成员申请了一块内存)指向堆的话,因为析构函数调用次数不足而造成内存泄露。
而使用
delete[]的话所有对象数组元素的析构函数都会被调用。
相关文章推荐
- new与delete申请内存
- 动态内存分配(new)和释放(delete)
- C++new delete 动态申请二维数组
- new与delete的运算符重载函数,实现了内存池,节点的申请与开辟
- new delete 运算符重载之 内存池申请
- 动态内存分配 new,delete
- c++ 的用 new 和delete 进行二维数组动态内存的创建和删除
- c++笔记02---内联 inline,动态内存 new/delete,引用,对象,类
- C++new delete 动态申请二维数组
- 使用new和delete[]进行动态内存分配和释放
- 基本语言细节--动态内存管理:new/delete 与malloc /free 的几点区别 -----整理于web
- c++中什么时候用new[]申请,可以用delete释放
- new、delete、指向连续空间的指针、数组、空间释放、空间申请[C++][内存管理]
- 理解C++关键字(3)---动态内存分配之 new和delete
- new、delete、指向连续空间的指针、数组、空间释放、空间申请[C++][内存管理]
- C++动态内存管理,malloc,calloc,realloc和new,delete的讲解
- 动态内存开辟--new_delete和malloc_free(十八)
- new、delete、指向连续空间的指针、数组、空间释放、空间申请[C++][内存管理]
- 深入理解C++ new/delete, new []/delete[]动态内存管理
- 通过重载new与delete运算符避免向系统重复申请内存从而提高程序运行效率的办法