深入理解new和delete

简介: C++中添加了new和delete替代了原先的malloc跟free,本文将详细介绍它们之间的区别。

1.new和malloc的区别是什么?

(1)malloc和free,称作C的库函数,new和delete,称作运算符;

(2)new不仅可以做内存开辟,还可以做内存初始化操作,malloc只能做内存开辟;

(3)new开辟内存失败,是通过抛出bad_alloc类型的异常来判断的,malloc开辟内存失败,是通过返回值和nullptr作比较。


2.new的种类

有4种。

int *p1 = new int (20);

int *p2 = new (nothrow) int;//不抛出异常

const int *p3 = new const int (40);

//定位new

int data =0;

int *p4 = new (&data) int (50);// 在堆上开辟了一块内存,内存的位置是data的地址,存放的值是50。

相关文章
|
6月前
|
C++
delete与delete【】区别
delete与delete【】区别
57 0
|
存储 编译器 C语言
深入了解C++中各种不同意义的new和delete
深入了解C++中各种不同意义的new和delete
158 0
|
C语言 C++
【二、new与delete详解】
【二、new与delete详解】
106 0