C++笔记:堆空间的初始化

本文探讨了malloc/new/delete在内存申请中的作用,包括何时可能失败及堆空间初始化的细节。重点讲解了malloc未初始化的情况和如何使用memset进行初始化,以及C++中new操作时的堆空间自动初始化过程。
摘要由CSDN通过智能技术生成


前言

什么情况下需要堆空间?
为了在程序运行过程中,自由控制内存的生命周期、大小


malloc/free

在这里插入图片描述
在这里插入图片描述
*p指向的是这4个字节的第一个字节,10赋值给这4个字节的第一个字节

若想给4个字节都赋值:
在这里插入图片描述

new/delete

C++中,看到new就是申请堆空间
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

申请堆空间在什么情况下会失败

堆空间内存不够用、堆空间内存很紧张

会导致:
①报错
②返回空地址

malloc申请堆空间时堆空间的初始化

堆空间并未初始化
在这里插入图片描述

利用memset初始化

搞懂memset,是将地址p开始的连续40个字节每一个字节都设置为0
在这里插入图片描述
memset能将较大的数据结构(比如对象、数组等)内存清零
在这里插入图片描述
在有些平台中,会至少给malloc分配4个字节或者16个字节
在这里插入图片描述

new申请堆空间时堆空间的初始化

在这里插入图片描述
在这里插入图片描述

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值