c++中的动态内存分配

内存动态分配方法

1.malloc(realloc)/free
(1)malloc/free是(libc.soc语言的库函数)。
(2)free释放内存时,不区分单个元素内存和数组分配。
(3)malloc开辟内存失败,返回值和NULL进行判断。
2.new/delete
(1)new/delete属于运算符不属于函数。
(2)delete释放内存时,区分单个元素内存和数组分配。

malloc和new的区别

1.malloc是函数,而new是运算符。
2.malloc结果要进行类型强转,new不用。
3.malloc只能分配内存,new还可以初始化。
4.malloc开辟内存失败返回NULL指针,new发出bad——alloc异常。(try catch)
5.new底层调用的是malloc。

free和delete的区别

1.delete底层调用的是free。
2.delete释放数组内存时,delete和指针之间要加 [ ](用来区分单个元素内存和数组内存)。

拓展问题:以下两组的区别

int *P1=new int[3];//在堆上开辟空间,不初始化
int *P2=new int3;//除在堆上开辟空间之外,还初始化为一个整型数组,之中的元素分别为0;

阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

不良信息举报

c++中的动态内存分配

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭