相同点:都可以用于内存的动态申请和释放。
不同点:
- 前者是c++运算符,后者是语言标准库函数
- new 自动计算要分配的空间大小,malloc需要手工计算
- new是类型安全的。
- new 调用名为operator new 的标准库函数,分配足够空间并调用相关对象的构造函数,delete对指针所指对象运行适当的析构函数,然后通过operator delete的标准函数释放该对象所用的内存,后者均没有相关调用。
- 后者需要库文件支持,前者不用
malloc 与 new 区别
- malloc和free是标准库函数,支持覆盖,new和delete 是运算符,支持重载
- malloc仅仅分配内存空间,free仅仅释放内存空间,不调用构造和析构函数。
- malloc和free返回的是void类型指针(必须进行类型转换)new和delete返回的是具体类型指针。
delete和delete[]的区别
- delete只会调用一次析构函数
- delete[]会调用数组中每个元素的析构函数。



