[从C到C++] 1.9 C++ new和delete操作符

在C语言中,动态分配和释放内存的函数是malloc、calloc和free,而在C++语言中,new、new[]、delete和delete[]操作符通常会被用来动态地分配内存和释放内存。

需要注意的是new、new[]、delete和delete[]是操作符,而非函数;new和delete也是C++的关键字。

操作符new用于动态分配单个空间,而new[]则是用于动态分配一个数组,操作符delete用于释放由new分配的空间,delete[]则用于释放new[]分配的一个数组。

“new 数据类型”即为new关键字的基本语法,可以动态的分配一个数据类型大小的空间。例如:


int *p = new int;

为p指针分配了一个int型的空间。new操作符根据请求分配的数据类型来推断所需的空间大小。

new[] 则是为了分配一个数组的空间。具体语法如:


int *A = new int[10];

该语句为A指针分配了一个数组的空间,该数组有10个int数组成员,如果分配成功,则p指针指向首地址,并且数组10个成员的地址是连续的,其地址分别为A、A+1、A+2、……、A+9。

delete操作符则专门用于释放由new分配的动态存储空间,在前面我们为p分配了一个int型的空间,我们可以按照如下的方式释放它:


delete p;

delete[] 则用于释放掉由new[]分配的数组空间,在前面我们为A指针分配了十个int单元,构成了一个数组,可以按照如下方式释放掉该空间:


delete[] p;

为了避免内存泄露,通常new和delete、new[]和delete[]操作符应该成对出现,并且不要将这些操作符与C语言中动态分配内存和释放内存的几个函数一起混用。建议在编写C++程序时尽量使用new、new[]、delete和delete[]操作符进行动态内存分配和释放,而不要使用C语言中内存分配和释放的函数,这是因为new、new[]、delete和delete[]操作符可以使用C++的一些特性,如类的构造函数和析构函数,能够更好地管理C++程序的内存

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值