嵌入式每日八股1.2
new和delete的实现原理, delete是如何知道释放内存的大小的?
new 的实现原理:当程序使用 new 操作符时,编译器会生成一段代码来执行以下操作:
- 调用 operator new 函数,该函数会在堆中分配一块内存。
- 调用对象的构造函数,初始化对象。
- 返回指向该对象的指针。
delete 的实现原理:当程序使用 delete 操作符时,编译器会生成一段代码来执行以下操作:
- 调用对象的析构函数,释放对象占用的资源。
- 调用 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
#嵌入式##八股#