CYGWIN:记忆中的变量自发地改变了价值观

时间:2011-04-25 00:54:52

标签: c++ gdb cygwin

当我在c ++代码中更改其他变量时,我的一些变量看似毫无道理地改变了值。我已经使用gdb硬件监视有问题的内存,即使我只是cout<< “喇嘛”;

如果有人可以提供任何建议,如何解决这个问题,将不胜感激!我很难过!

当我运行cygwin文档中提供的示例最大内存程序时,我被告知我有1.5 GB的可用RAM(对于该程序的范围来说应该很容易)。

2 个答案:

答案 0 :(得分:3)

变量“自发地”改变值的最可能原因是缓冲区溢出。下一个最可能的原因是堆损坏(或者在free() d或delete d(也就是悬空记忆)之后使用内存。)

您没有说明更改的变量是全局变量,堆分配还是本地变量。我猜测堆分配,在这种情况下悬空理论是最可能的 - 任何可以合法分配内存的东西(例如cout)都可以抓取并修改你通过free或{释放的内存{1}}。

答案 1 :(得分:2)

您是否尝试使用valgrind检查代码中的内存错误?