六、C++ new/delete Operator

六、C++ new/delete Operator

c 语言中提供了 malloc 和 free 两个系统函数,完成对堆内存的申请和释放。而 c++则提供了两关键字 new 和 delete。

1.new/new[] 用法

1.开辟单变量地址空间

int *p = new int; //开辟大小为 sizeof(int)空间
int *a = new int(5); //开辟大小为 sizeof(int)空间,并初始化为 5

2.开辟数组空间

一维: int *a = new int[100]{0};开辟一个大小为 100 的整型数组空间
int **p = new int*[5]{NULL}
二维: int (*a)[6] = new int[5][6]
三维: int (*a)[5][6] = new int[3][5][6]
四维维及其以上:依此类推

2.delete/delete[]用法

1.int *a=new int;

delete a; //释放单个 int 的空

2.int *a=new int[5];

delete []a; //释放int数组空间

3.关于返回值

#include <iostream>
using namespace std;
int main()
{
	//c 语言版本
	char *ps = (char*)malloc(100);
	if(ps == NULL)
		return -1;
	//C++ 内存申请失败会抛出异常
	try{
		int *p = new int[10];
	}catch(const std::bad_alloc e) {
		return -1;
	}
	//C++ 内存申请失败不抛出异常版本
	int *q = new (std::nothrow)int[10];
	if(q == NULL)
		return -1;
	return 0; 
}

1,new/delete 是关键字,效率高于 malloc 和 free。
2,配对使用,避免内存泄漏和多重释放。
3,避免,交叉使用。比如 malloc 申请的空间去 delete,new 出的空间被 free。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值