需要 C++ 中堆损坏的示例代码
Need Sample code for heap corruption in C++
我正在尝试学习和理解 VC++ 中的调试堆损坏。
我在 MSDN (https://msdn.microsoft.com/en-us/library/windows/hardware/ff543097(v=vs.85).aspx) 上找到了不错的文章。
谁能给我一个示例代码来重现堆损坏问题。
这样我就可以按照 msdn 文章中提到的步骤进行操作。
这应该会损坏堆:
char *cp = new char[10];
(*(cp - 5))++;
那应该会破坏分配的内存块前面的 header。如果您查看编译器创建的 header 的结构,它还应该让您了解如何创建特定类型的损坏 header 数据。
您可能想尝试禁用优化,因为这是未定义的行为,优化器可能会对 UB 代码做一些有趣的事情。如有疑问,请检查编译器的汇编输出或调试器中的机器代码反汇编,以查看生成了哪些代码。
我正在尝试学习和理解 VC++ 中的调试堆损坏。
我在 MSDN (https://msdn.microsoft.com/en-us/library/windows/hardware/ff543097(v=vs.85).aspx) 上找到了不错的文章。
谁能给我一个示例代码来重现堆损坏问题。 这样我就可以按照 msdn 文章中提到的步骤进行操作。
这应该会损坏堆:
char *cp = new char[10];
(*(cp - 5))++;
那应该会破坏分配的内存块前面的 header。如果您查看编译器创建的 header 的结构,它还应该让您了解如何创建特定类型的损坏 header 数据。
您可能想尝试禁用优化,因为这是未定义的行为,优化器可能会对 UB 代码做一些有趣的事情。如有疑问,请检查编译器的汇编输出或调试器中的机器代码反汇编,以查看生成了哪些代码。