需要C ++中的堆损坏示例代码

时间:2016-02-01 04:51:39

标签: c++ windows debugging visual-c++ heap-corruption

我正在尝试学习和理解VC ++中的调试堆损坏。

我在MSDN(https://msdn.microsoft.com/en-us/library/windows/hardware/ff543097(v=vs.85).aspx)上找到了漂亮的艺术品。

有人可以提供示例代码来重现堆损坏问题。 所以我可以按照msdn文章中提到的步骤进行操作。

1 个答案:

答案 0 :(得分:2)

这应该腐败堆:

char *cp = new char[10];
(*(cp - 5))++;

这应该破坏分配的内存块前面的标题。如果你查看编译器创建的头文件的结构,它还应该让你知道如何创建特定类型的损坏的头数据。

您可能希望尝试禁用优化,因为这是未定义的行为,优化器可能会使用UB代码执行一些有趣的操作。如有疑问,请在调试器中检查编译器或机器代码反汇编的汇编输出,以查看生成的代码。