堆内存中的奇怪问题!

时间:2010-05-04 09:28:39

标签: c memory heap corruption vxworks

我发现多线程应用程序的一个线程在VxWorks中崩溃。我没有调试信息。在更深入的分析中,我发现崩溃是由于全局内存地址值被更改引起的。

这个全局内存地址(它是函数的地址。我正在使用函数指针)存储在堆中的特定地址位置。我发现这个全局内存地址本身减少了2,这导致错误的访问和加载指令错误。

这是随机发生的。但是,我真的很惊讶什么可以导致地址值减少2。

任何指示的任何猜测,想法或指示都可能有所帮助。

1 个答案:

答案 0 :(得分:4)

某些CPU有一个硬件断点,可以在写入内存位置时中断。将CPU设置为在读取或写入该位置时进行中断,并在看到哪个函数正在执行时查看堆栈。