当我在我的 C++ 代码中更改其他变量时,我的一些变量似乎不合理地更改了值。我已经使用 gdb 来硬件监视有问题的内存,即使我只是 cout << "bla"; 它也会发生。
如果有人可以就如何解决此问题提供任何建议,我们将不胜感激!我难住了!
当我运行 cygwin 文档中提供的示例最大内存程序时,我被告知我有 1.5 GB 的可用 RAM(这对于该程序的范围来说应该足够了)。
最佳答案
变量“自发”改变值的最可能原因是缓冲区溢出。下一个最可能的原因是堆损坏(或在内存被 free()
d 或 delete
d(也称为悬空内存)之后使用内存)。
您没有说明更改的变量是全局变量、堆分配变量还是局部变量。我猜测堆已分配,在这种情况下,悬挂理论是最有可能的——任何可以合法分配内存的东西(例如 cout
)都可以获取和修改您通过 free 释放的内存
或 删除
。
关于c++ - CYGWIN:内存中的变量自发地改变值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5774295/