C++中的new和malloc
new和malloc
new和malloc的区别:
- 性质不同:new是一个C++中特有的操作符,而malloc是C中的内存分配函数
- 内存分配方式不同:malloc分配的内存是未初始化的,而new不仅分配了内存,还调用了对象的构造函数来初始化对象
- 使用语法不同:malloc使用时需要制定分配内存的大小,如malloc(sizeof(int)),但new不用,使用更加简洁(new int)
- 返回类型:malloc返回void*类型指针,需要强制转换成其他指定类型,而new直接返回响应的数据类型的指针,无需类型转换
- 错误处理:内存分配失败后,malloc返回null,而new会抛出std::bad_maclloc异常
- 配对操作:maclloc分配内存使用free释放,而new分配内存要使用delete释放
使用new操作符分配内存,可以使用free释放吗?
不可以,只能使用delete
使用new[]操作符分配内存,可以使用delete释放吗?
不可以,只能使用delete[]
C++中的new和malloc
http://example.com/2024/12/20/C-中的new和malloc/