gpt4 book ai didi

c++ - 可以清理损坏的堆吗?

转载 作者:搜寻专家 更新时间:2023-10-31 02:03:41 26 4
gpt4 key购买 nike

如果我破坏了我的堆,我可以事后清理它吗?如果是,如何?

堆损坏示例:

int *x = new int; // If we allocate memory wit new, we have to free it later.. 
x++;
*x = 1; // the heap is now corrupted

但是,调用free(x)delete x 等会导致上面的代码崩溃。内存是否仍能以某种方式被释放,或者它是否已经坏到无可救药的地步?

最佳答案

If I corrupt my heap, can I clean it up afterwards?

不,你不能解决这个问题。基本上你的程序有未定义的行为堆损坏 是由某些在 Debug模式下运行代码的清理工具检测到的。

无法撤消 *x = 1; 或恢复之前驻留在其中的值。


However, calling free(x), delete x etc. will crash above's code.

当然,您正在尝试释放您从未分配过的东西。

Can the memory still be somehow deallocated or is it already broken beyond hope?

它的 splinter 超出了任何希望。

关于c++ - 可以清理损坏的堆吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54973082/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com