曾想过delete操作符是如何知道要删除的内存块的大小而避免内存泄露的。是否有一个类似'\0'的符号来标识内存块的结束。
后来,查到new操作符会在新分配的内存块前面4个字节储存内存块的大小。也就是说,new 操作符实际开辟的内存比你之前以为的要多4个字节。
测试一下,下面的代码输出结果为 400
#include <iostream>
using namespace std;
int main()
{
<span style="white-space:pre"> </span>int *p = new int[100];
<span style="white-space:pre"> </span>cout << *(p -4) << endl;
<span style="white-space:pre"> </span>delete p;
}
<span style="white-space:pre"> </span>
本文深入探讨了C++中new操作符的工作原理,特别是它如何在分配内存时预留额外空间用于存储内存块大小,并解释了这如何帮助避免内存泄露。通过一个简单的代码示例,演示了如何利用这一特性进行内存管理。

被折叠的 条评论
为什么被折叠?



