【问题标题】:Heap Corruption Error when deleting a pointer删除指针时出现堆损坏错误
【发布时间】:2010-07-08 01:20:20
【问题描述】:

删除指针时出现堆损坏错误。对于此项目,随机基地址的链接参数设置为禁用图像随机化。不知道为什么这样设置。无论如何,当包含库的特定头文件时,我只会收到该错误。奇怪的是,即使包含该头文件,如果将随机基地址设置为启用图像随机化,错误也不会出现。那么真的是堆损坏还是我应该只更改链接参数?

【问题讨论】:

  • 您是否有可能通过基本指针进行删除?如果是这样,请确保基类定义了一个虚拟 dtor。
  • 这通常(而且几乎总是)是您的代码问题,而不是编译器设置或系统头文件。您可能在某处覆盖了一些内存,并且碰巧的是,当不包含某些标头或使用特定的编译器设置时,它并没有触及系统的关键部分。更多信息,例如代码示例,在这里会有所帮助。

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


【解决方案1】:

随机基地址告诉我们是否总是在同一地址加载库。将其随机化可提供一定程度的安全性,以防止漏洞调用/修改代码。

几乎可以肯定,您的项目中存在堆问题,而且很可能与包含的标头无关。标头可能会引入一些使用损坏堆的符号,从而导致问题。同样,在随机化基地址时,您的堆仍然会损坏,但问题永远不会以明显的方式表现出来(尽管事情可能会稍微不正确)。

如果您能够使用可能对您有所帮助的内存检查器或调试分配器。

否则很遗憾,如果没有代码/更多信息,将很难为您提供额外的提示。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-01-18
    • 1970-01-01
    • 2010-11-20
    • 1970-01-01
    • 2013-04-15
    • 2015-08-14
    • 2013-06-04
    • 1970-01-01
    相关资源
    最近更新 更多