删除[]的奇怪行为

时间:2016-06-08 09:08:59

标签: c++ memory

{{1}}

此代码打印

  

p [5] = 50000

我认为在运行{{1}}时应该释放内存,所以任何人都可以告诉我发生了什么?

1 个答案:

答案 0 :(得分:1)

内存分配器的行为取决于您使用的编译器和/或特定的内存分配器。 如果你允许我假设你正在使用GCC,那么它正在使用属于 glib 的内存分配器。

这个分配器,与其他人一样多(或者我敢说大多数)其他人,永远不会将分配的内存返回给操作系统。相反,它"回收"未来分配的内存相同。

因此,当您尝试访问它时,没有访问冲突,因为此内存仍映射到您的应用程序。 此外,在下一次分配之前,该内存上的数据可能会保持不变。