嵌入式每日八股1.2

new和delete的实现原理, delete是如何知道释放内存的大小的?

new 的实现原理:当程序使用 new 操作符时,编译器会生成一段代码来执行以下操作:

  1. 调用 operator new 函数,该函数会在堆中分配一块内存。
  2. 调用对象的构造函数,初始化对象。
  3. 返回指向该对象的指针

delete 的实现原理:当程序使用 delete 操作符时,编译器会生成一段代码来执行以下操作:

  1. 调用对象的析构函数,释放对象占用的资源。
  2. 调用 operator delete 函数,将内存释放回堆。

delete 如何知道释放内存的大小:delete 操作符并不知道要释放的内存大小,它只需要知道要释放的指针地址。当对象被 new 分配内存时,编译器会在堆中存储有关对象大小的信息,包括对象的长度和其他元数据。当使用 delete 操作符释放对象时,编译器使用这些元数据来确定要释放的内存块的大小。因此,如果在使用 new 时使用了错误的长度,可能会导致 delete 操作符释放错误的内存块,从而引起程序错误或崩溃。

【嵌入式八股】精华版 https://www.nowcoder.com/creation/manager/columnDetail/0rOeJm

【嵌入式八股】一、语言篇https://www.nowcoder.com/creation/manager/columnDetail/mwQPeM

【嵌入式八股】二、计算机基础篇https://www.nowcoder.com/creation/manager/columnDetail/Mg5Lym

【嵌入式八股】三、硬件篇https://www.nowcoder.com/creation/manager/columnDetail/MRVDlM

【嵌入式八股】四、嵌入式Linux篇https://www.nowcoder.com/creation/manager/columnDetail/MQ2bb0

#嵌入式##八股#
全部评论

相关推荐

头像
04-29 10:53
已编辑
东北大学 自动化类
点赞 评论 收藏
转发
1 2 评论
分享
牛客网
牛客企业服务