C++ new 和malloc 区别

1.分配地方不同,malloc是堆上面,new是自由存储区域

2.malloc/delete是函数,new/delete是操作符,可以重载

3.malloc 要指定大小,返回的是void*指针,开辟的是空空间,失败返回NULL

   new有类型检测,编译器会自动计算大小,还会初始化空间,返回的是类指针,失败抛出异常

   (int* p = new(std::nothrow) int;)可以避免抛出异常,返回NULL

4.new底层是调用malloc来实现的

5. new[] /delete[],一个个分配,一个个释放, 而malloc/free 处理数组的时候 一次处理完成,free(p),在p的前面1个内存地址存储需要释放的空间大小

/////////////////////////////////////////////////////////

malloc 的实现,有时间再更新。

猜你喜欢

转载自www.cnblogs.com/sofard/p/9819712.html
今日推荐