C++中的关键字new和delete

指针常与堆(heap)空间的分配有关。堆就是指一块内存区域,它允许程序在运行时以指针的方式从其中申请一定数量的存储单元(其他存储空间的分配是在编译时完成的),用于数据的处理。堆内存也称为动态内存。

C语言的方法:

1.    #include <stdlib.h>

2.    int *p= (int *) malloc(sizeof(int));

3     ....

4.    free(p);

c++的方法:

new的功能类似于malloc,用于从堆内存中分配指定大小的内存区域,并返回获得内存区域的首地址。如果分配不成功,就返回空指针,故可以此作为判断内存分配成功与否的标志。

int *a=new int(120);  

申请一个整形变量空间,赋初值为120,并定义一个整形指针a指向改地址空间。

int *a=new int(n);  

申请一个整型变量空间,赋初值为n,并定义一个整型指针a指向该地址空间。

delete a;

用于释放单个指针变量。

int *a=new int[5];

创建int型指针,并指向长度为4*sizeof(int)的一段内存

注意:不能初始化

释放方式:delete [ ]a;

注意:这个 [ ] 不能去掉,如果去掉了就会只释放a[0]所占的空间,a[1]到a[4]不会被释放,产生内存泄露。


p = new type[n];
// 分配具有n个元素的数组

动态二维数组申请空间:

int **p = new int* [5];
for(int i=0;i <5;i++)
p[i] = new int[10];

释放空间:

for(int i=0; i <5; ++i)
delete []p[i];
delete []p;

最后总结:

C++方法优势

1、new能够自动计算要分配的内存大小,不必用sizeof计算要分配的内存的字节数,减少了出错的可能性。 
2、new不需要进行类型转换,能够自动返回正确的指针类型。 
3、new可以对分配的内存进行初始化。 
4、new和delete可以被重载,借此扩展new和delete的功能,建立自定义的存储分配系统。

 

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值