new、delete和malloc、free 都在堆上进行动态的内存操作,用malloc函数需要指定内存分配的字节数并且不能初始化对象,new会自动调用对象的构造函数;delete会调用对象的析构函数,而free不会。