当我在c ++代码中更改其他变量时,我的一些变量看似毫无道理地改变了值。我已经使用gdb硬件监视有问题的内存,即使我只是cout<< “喇嘛”;
如果有人可以提供任何建议,如何解决这个问题,将不胜感激!我很难过!
当我运行cygwin文档中提供的示例最大内存程序时,我被告知我有1.5 GB的可用RAM(对于该程序的范围来说应该很容易)。
答案 0 :(得分:3)
变量“自发地”改变值的最可能原因是缓冲区溢出。下一个最可能的原因是堆损坏(或者在free()
d或delete
d(也就是悬空记忆)之后使用内存。)
您没有说明更改的变量是全局变量,堆分配还是本地变量。我猜测堆分配,在这种情况下悬空理论是最可能的 - 任何可以合法分配内存的东西(例如cout
)都可以抓取并修改你通过free
或{释放的内存{1}}。
答案 1 :(得分:2)
您是否尝试使用valgrind检查代码中的内存错误?