malloc/free 与 new/delete

相同点:

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

不同点:

  1. malloc 和 free 是C/C++ 标准库函数, new / delete 是 C++ 的运算符
  2. new 自动计算需要分配的空间,而 malloc 需要手工计算所需字节数
  3. new 是类型安全的,而 malloc 不是;例:
int *p = new float[2]; //编译时指出错误
int *p = (int*) malloc(2*sizeof(double));//编译时无法指出错误
  1. new 调用 operator 分配足够的空间,并调用相关对象的构造函数,而 malloc 不能调用构造函数;delete 将调用该实例的析构函数,然后调用类的 operator delete ,以释放该实例占用的空间,而free 不能调用析构函数
  2. malloc/free 需要库文件支持, new/delete 则不需要

猜你喜欢

转载自blog.csdn.net/weixin_39554266/article/details/83652312