malloc()vs new

以下是malloc()和new运算符之间的区别。 :

null
  1. 调用构造函数: new调用构造函数,而malloc()不调用。事实上,原始数据类型(char、int、float等)也可以用new初始化。例如,下面的程序打印10个。

CPP

#include<iostream>
using namespace std;
int main()
{
// Initialization with new()
int *n = new int (10);
cout << *n;
getchar ();
return 0;
}


输出:

10

2.操作员与功能: new是一个运算符,而malloc()是一个函数。

3.退货类型: new返回精确的数据类型,而malloc()返回void*。

4.故障情况: 失败时,malloc()返回NULL,其中as new抛出bad_alloc异常。

5.记忆: 对于new,内存是从空闲存储区分配的,就像malloc()中一样,内存分配是从堆中完成的。

6.尺寸: 所需的内存大小由编译器为new计算,我们必须手动计算malloc()的大小。

7.缓冲区大小: malloc()允许使用realloc()更改缓冲区的大小,而new不允许

new
malloc()
调用构造函数 不调用构造函数
是接线员 这是一个函数
返回精确的数据类型 返回无效*
失败时,抛出bad_alloc异常 失败时,返回NULL
大小由编译器计算 大小是手动计算的

如果你在上面的帖子中发现任何不正确的地方,或者你想分享关于上述主题的更多信息,请写评论。

© 版权声明
THE END
喜欢就支持一下吧
点赞6 分享