new和malloc区别
new 和 malloc 都是用于在 heap(堆)中分配内存的,但它们之间存在一些重要的区别:- 来源:
new是 C++ 中的运算符,而malloc是 C 的函数。
- 构造和析构:
new不仅分配内存,还会调用对象的构造函数来初始化对象。当使用delete释放内存时,它还会调用对象的析构函数。而malloc只是简单地分配一块内存,不会调用任何构造函数或析构函数。
- 类型安全:
new会返回正确的类型,不需要类型转换。而malloc返回的是void*,需要进行类型转换。
- 错误处理:如果
new无法分配内存(例如,内存不足),它会抛出std::bad_alloc异常(除非你使用了nothrow版本的new,那样的话它会返回nullptr)。而malloc在无法分配内存时只会返回NULL(或nullptr在 C++ 中)。
- 内存分配大小:
new会自动计算需要分配的内存大小,而malloc需要显式地提供字节数。
以下是两者的使用示例:
使用
new:使用
malloc:- 作者:Olimi
- 链接:https://olimi.icu/article/48eeb201-646d-4d20-b2e4-d040731e1a61
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。