详细说明new和malloc的区别
时间: 2024-06-05 17:08:42 浏览: 101
C++中new和malloc的区别
5星 · 资源好评率100%
new和malloc都可以用来动态申请内存空间,但它们在实现和用法上有一些区别。
1. 用法上的区别:
- new是C++中的关键字,而malloc是C语言中的库函数。
- new需要指定数据类型,而malloc需要指定申请内存的字节数。
- new会自动调用构造函数,malloc不会。
- new返回的是对象的指针,malloc返回的是void类型的指针。
2. 实现上的区别:
- new是运算符,底层调用的是operator new函数,而malloc是C库函数,底层调用的是系统的malloc函数。
- new会在内存申请失败时抛出异常,而malloc在内存申请失败时返回NULL。
- new返回的内存地址是对齐过的,而malloc返回的内存地址不一定是对齐过的。
综上所述,new和malloc都可以用来申请内存,但在使用时需要根据具体情况选择使用哪个。如果需要动态申请对象,我们通常使用new;如果需要动态申请一块连续的内存空间,我们通常使用malloc。
阅读全文