new和malloc的用法和区别

从以下几个方面总结下new和malloc的区别:

特征 new/delete malloc/free
构造函数和析构函数 调用 不调用
分配内存的位置 自由存储区
分配内存的大小 由编译器根据类型计算得出 必须显示指定字节数
返回类型 返回的是对象类型的指针 返回void*,需要强制类型转换成需要的类型
内存分配失败返回值 默认抛出bac_alloc异常 返回NULL
已分配内存的扩充 无法直观的处理 使用realloc简单完成
分配内存是内存不足 客户能够指定处理函数或重新指定分配器 无法通过用户代码进行处理
处理数组 有处理数组的new版本new[] 需要用户计算数组的大小后进行内存分配
函数重载 允许 不允许
是否相互调用 可以,看具体的operator new/delete实现 不可调用new
地位 运算符(其地位等同于“+”,“=” C++标准库函数

 

参考博客:

https://blog.csdn.net/nie19940803/article/details/76358673

https://blog.csdn.net/linux_ever/article/details/50533149

https://blog.csdn.net/qq_26816591/article/details/52214313

https://blog.csdn.net/xiaminli/article/details/75801688

https://blog.csdn.net/Dream_xun/article/details/50347139

你可能感兴趣的:(C++)