1.new 为对象分配堆空间时,会调用构造函数, malloc 就不会。
2.delete 释放对象的堆空间时,会调用析构函数,free 就不会。
3.new 为对象分配空间时,可以传递参数给构造函数使用, malloc 不行。
#include <iostream>
#include <string.h>
#include <stdlib.h>
using namespace std;
class base
{
public:
base(){cout << "调用构造函数" << endl;}
~base(){cout << "调用析构函数" << endl;}
};
int main()
{
//利用 malloc 分配 base 的堆空间
base *p = (base *)malloc(sizeof(base)); //不会调用,构造函数
free(p); //不会调用析构函数
base *p1 = new base; //会调用,构造函数
delete p1; //会调用析构函数
}