在c++中malloc/free 和 new/delete这两对都是对内存进行管理作用,但他们有很大的区别。
首先malloc、free是c/c++的标准库函数,注意他们是函数。而new和delete是c++的运算符,在c中式没有的。他们对内部数据类型没有什么太大区别,都是申请内存和释放内存,但是对非内部数据类型就能体现出来,由于c中没有类这个概念,所以用malloc时不会执行类的构造函数,使用free时也不会调用析构函数,而new和delete就会自动调用构造函数和析构函数。。
看下面的程序就能体现这个区别: