7、new / delete 与 malloc / free的异同

相同点:

  都可用于内存的动态申请和释放

不同点:

  前者是C++运算符,后者是C/C++语言标准库函数

  new自动计算要分配的空间大小,malloc需要手工计算

  new是类型安全的,malloc不是

  new调用名为operator new的标准库函数分配足够空间并调用相关对象的构造函数,delete对指 针所指对象运行适当的析构函数;然后通过调用名为operator delete的标准库函数释放该对象所用内存。

  后者均没有相关调用 后者需要库文件支持,前者不用

  new是封装了malloc,直接free不会报错,但是这只是释放内存,而不会析构对象

原文地址:https://www.cnblogs.com/crbhf/p/14863599.html