2010-07-08 43 views
1

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

+1

任何你通过基指针删除的机会?如果是这样,请确保基类定义了一个虚拟dtor。 – stinky472 2010-07-08 01:28:03

+2

这通常(并且几乎总是)您的代码的问题,而不是编译器设置或系统标题。您可能在某处重写了某些内存,偶然的情况是,当没有包含某些头文件或使用特定的编译器设置时,它没有触及系统的关键部分。更多的信息,比如代码示例在这里会有所帮助。 – 5ound 2010-07-08 01:32:49

+5

发布该类的代码。 – 2010-07-08 02:00:12

回答

2

随机基地址告诉是否始终将库加载到同一地址。对它进行随机化提供了一定程度的安全性,以防止利用程序调用/修改代码。

几乎可以肯定你的项目中存在一个堆问题,很可能它与包含的头文件无关。有可能是头部引入了一些使用损坏的堆的符号,导致了问题。同样,当随机化基地址时,你的堆仍然受到破坏,但问题从未以明显的方式显现(尽管事情可能稍微有些不正确)。

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

否则不幸的是没有代码/更多的信息将很难给你额外的提示。