new delete 详解

本文详细介绍了C++中的动态内存管理,包括常规的new和delete操作,如何使用new创建动态数组,以及在类和对象中new和delete的应用。强调了new和delete必须成对使用以避免内存泄漏,同时指出delete只能释放new分配的内存。文章还讨论了构造函数和析构函数在内存管理中的角色,特别是在涉及动态分配的对象时如何正确使用delete。
摘要由CSDN通过智能技术生成

常规的new 和 delete

当需要内存时,可以使用new申请内存,但在用完内存时应当使用delete 去归还内存,以防止内存泄漏,具体使用方案见下面代码:

int* ps = new int ; // 使用new 申明变量空间
...
...
delete ps ; '// delete 删除所申明的变量空间

上述代码将删除ps 指针指向的内存空间,但不会删除指针本身,即仍然可以使用该指针去指向其他int 类型的变量。new 和 delete 一定需要成对的使用否则极易发生内存泄漏。

  • 注意:不要释放已经释放完毕的内存块,C++标准指出,这样做的结果将会不确定。
  • 注意:delete只能释放通过new分配的内存。 例子见下列代码:
int* ps = new int ;
delete ps ; // ok 
delete ps ; // 重复释放 not ok 
int jugs = 5 ;
ps = &jugs ; 
delete ps ; // delete 只能释放由new 分配的内存空间 not ok

使用new 来创建动态数组

使用new 创建数组的方式很简单,即将数组元素的类型和数目告诉new即可,例如:要创建包含10个int元素的数组
 

int* psome = new int [10] ;

指针psome指向数组的第一个元素地址。

当程序使用new 分配变量空间,在变量使用完毕后应当使用delete 去释放该空间


                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值