栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

170-C++基础(new和delete基础,placement new定位new)

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

170-C++基础(new和delete基础,placement new定位new)

new和delete

new和malloc的区别是什么?
delete和free的区别是什么?

  • malloc和free,称作C语言的库函数;
  • malloc只管开辟内存(按字节开辟),不管初始化。

  • new和delete,称作运算符。
  • new后边直接指定类型,如int,在堆上开辟int类型的内存。
  • new和delete,称作运算符。
  • new后边直接指定类型,如int,在堆上开辟int类型的内存。

malloc开辟内存失败,是通过返回值和nullptr空指针做比较;
而new开辟内存失败,是通过抛出bad_alloc类型的异常来判断的。
把可能发生异常的代码放在try里面:

开辟和释放数组的内存

C语言的malloc是这样:

C++的new是这样:

  • new开辟数组内存时是不能在小括号进行初始化的。
  • 这样写,是堆上只负责开辟数组,数组的元素不初始化。

这样写,是开辟的数组的所有元素都初始化为0:

释放数组内存:

new的种类
int *p1 = new int(20);

int *p2 = new (nothrow) int;//不抛出异常版本的new,返回值跟空nullptr判断。

const int *p3 = new const int(40);//开辟常量内存

//定位new  
int data = 0;
int *p4 = new (&data) int(50);
//在指定的内存上划分出4字节的内存赋值为50
cout << "data:" << data << endl;//data:50


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/866927.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号