内存管理
new和malloc的区别
- 参数:new无须指定内存块的大小,编译器会根据类型信息自行计算。malloc需要显式地指出所需内存的尺寸
- 返回类型:new分配成功时,返回的是相应类型的指针,类型严格与对象匹配,无须进行类型转换。而malloc内存分配成功是返回void*,需要通过强制类型转换将void*指针转换成我们需要的类型
- 分配失败:new分配内存失败时,会抛出bac_alloc异常。malloc分配内存失败时会返回NULL
- 重载:C++允许重载new/delete,malloc不允许
- 内存区域:new是从自由存储区上为对象动态分配内存,malloc是从堆区分配。自由存储区可以不位于堆区
内存泄漏
- 定义:程序中一块不再使用的内存没有被释放,造成内存保持占有状态,使操作系统不能将内存分配给其他的程序(进程)。内存泄漏不是一个立即会引发故障的错误,但是它将消耗系统内存