1.操作对象不同。
malloc与free是C++/C语言的标准库函数,new/delete是C++的运算符。执行构造函数和析构函数。它们都可用于申请动态内存和释放内存。
2.用法不同。
new自动计算需要分配的空间,而malloc需要手工计算字节数。new是类型安全的,而malloc不是。
说明:
malloc函数的参数是接受需要分配的内存字节数,如果内存能够满足请求量,那么将会返回:指向被分配的内存块起始位置。
free函数释放的是指针指向的内存(不是释放的指针本身,不会删除指针本身),其中指针必须指向所释放内存空间的首地址。
使用new的时候:内存通过operator new 函数被分配。为被分配的内存调用一个或多个构造函数构建对象。
使用delete的时候:为将被释放的内存调用一个或多个析构函数 (会删除对象本身)。释放内存(通过operator delete 函数)。
简单来说:new和delete能进行对对象进行构造和析构函数的调用进而对内存进行更加详细的工作,而malloc和free不能。