网创优客建站品牌官网
为成都网站建设公司企业提供高品质网站建设
热线:028-86922220
成都专业网站建设公司

定制建站费用3500元

符合中小企业对网站设计、功能常规化式的企业展示型网站建设

成都品牌网站建设

品牌网站建设费用6000元

本套餐主要针对企业品牌型网站、中高端设计、前端互动体验...

成都商城网站建设

商城网站建设费用8000元

商城网站建设因基本功能的需求不同费用上面也有很大的差别...

成都微信网站建设

手机微信网站建站3000元

手机微信网站开发、微信官网、微信商城网站...

建站知识

当前位置:首页 > 建站知识

<六>理解C++ new delete

new和malloc区别?delete和free区别?
malloc和free是C语言的库函数
new和delete叫做运算符
malloc是否开辟成功是通过返回值和空指针比对判断.而new开辟失败会抛出异常 bad_alloc

创新互联是一家专注于成都做网站、网站建设与策划设计,天水网站建设哪家好?创新互联做网站,专注于网站建设十年,网设计领域的专业建站公司;建站业务涵盖:天水等地区。天水做网站价格咨询:18982081108

new 不仅可以做内存开辟,还可以做内存初始化操作.

点击查看代码
int *p =(int *)malloc(sizeof(int));
// malloc按照字节开辟空间,返回的是void *,需要自己强转到指定类型.
//malloc只负责空间开辟,不负责初始化

if(p==nullptr){
   return -1;
}
*p=20;
//释放malloc申请的空间地址,只需要将p地址传入即可
free(p);

//new 成功与否通过异常捕捉实现
try{
   int *p1=new int(20);
   delete p1;
}catch(const bad_alloc &e){

}


//C语言开辟数组空间

int *arr1=(int *)malloc(sizeof(int) * 20);
if(arr1==nullptr){
   return -1;
}
free(arr1);//C语言无论是释放单个元素还是数组 都是传入地址即可.

//C++ 开辟数组空间
int  *arr2 =new int[20];     //堆上只负责开辟空间不会做初始化
int  *arr3 =new int[20]();  //堆上开辟空间,同时负责初始化为0
int  *arr4=new int[20](40);//堆上开辟空间,并且初始化值40 
//注意new 成功还是失败不要通过和nullptr对比方式,而通过捕获异常方式来判断

delete[]arr2;
//注意delete在释放单个元素的时候不需要[] 而在释放数组空间的时候要[]


C++中new 的方式有哪几种?

点击查看代码
int *p=new int(20);
int *p2=new (nothrow) int;
cont int *p3=new const int(10);//在堆空间开辟一个常量

//定位new 
int data=100;
int *p4=new (&data) int(200);//在指定的位置 开辟空间,放入200值


本文题目:<六>理解C++ new delete
分享URL:http://bjjierui.cn/article/dsoiecd.html

其他资讯