重点讲解malloc 与new 的几个重大区别:
- malloc与free是标准库函数,new与delete是C++的运算符/操作符;
- new在初始化对象时,调用对象的构造函数,对应的delete调用相应的析构函数。而malloc仅仅分配内存,free仅仅回收内存,free()释放的是指针指向的内存!注意!释放的是内存,不是指针!这点非常非常重要!指针是一个变量,只有程序结束时才被销毁;
- new返回实际的数据类型,而malloc返回void*。`
以下是一个new的实例:
#include<iostream>
using namespace std;
int main()
{
int *n = new int(10);
// initialization with new()
cout<<*n;
getchar();
return 0;
}
输出 10;
[参考资料]
(http://blog.csdn.net/gc315630/article/details/5833554)
(http://www.geeksforgeeks.org/malloc-vs-new/)