New和Malloc区别

New和Malloc区别

今天上课突然被问到这个问题,哈哈哈哈,一时没答上来,立马去查码住学习,主要从以下几个角度区别。

一. 从申请内存所在的位置角度

二.返回类型的安全性问题

三. 内存分配失败时的返回值

四. 是否需要指定内存的大小

具体来看:

一、从申请内存所在的位置角度

  1. 申请内存,这个内层的位置有哪些呢,有自由存储区和堆内存。
  2. new操作符是从自由存储区即free store 上为对象动态的分配内存空间,这也就是为什么常说,动态分配一个空间,new一个了。
  3. 自由存储区是C++基于new操作符的一个抽象概念,只要是通过new运算符进行的内存申请,内存均为自由存储区。
  4. malloc函数是从堆上进行动态分配的内存,注意啊,都是动态分配的啊,堆是操作系统中一块特殊的内存,用于程序的内存动态分配,c语言使用的是malloc从堆上分配内存,使用free释放已分配的内存,注意一个malloc对应一个free。
  5. 记得还有一个calloc,区别:malloc()函数只有一个参数,而calloc函数是有两个参数,元素数目和分配空间大小。
  6. 初始化时,malloc()函数不能初始化分配的内存空间,动态分配完之后,数据是随机产生的垃圾数据;
  7. calloc(&
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值