new和malloc的区别

2022-01-21 189 0

1.new内存分配失败时,会抛出bac_alloc异常,它不会返回NULL;malloc内存分配失败时会返回NULL。

2.使用new操作符申请内存分配时无需指定内存块的大小,而malloc则需要显式的指出所需内存的尺寸。

3.operator new / operator delete可以被重载,而malloc/free并不允许重载。

4.new/delete会调用对象的构造函数/析构函数以完成对对象的构造/析构,而malloc则不会。

5.malloc与free是C++、C语言的标准库函数,new、delete是c++运算符。

6.new操作符从自由存储区上为对象动态分配内存空间,而malloc函数从堆上动态分配内存。

相关文章

简述 private、 protected、 public、internal 修饰符的访问权限
堆和栈的区别?
构造函数为什么一般不定义为虚函数?而析构函数一般写成虚函数的原因 ?
什么情况下会调用拷贝构造函数?
介绍下抽象类、接口类、聚合类?
虚函数指针、虚函数表

发布评论