c++ - CYGWIN:内存中的变量自发地改变值

标签 c++ gdb cygwin

当我在我的 C++ 代码中更改其他变量时,我的一些变量似乎不合理地更改了值。我已经使用 gdb 来硬件监视有问题的内存,即使我只是 cout << "bla"; 它也会发生。

如果有人可以就如何解决此问题提供任何建议,我们将不胜感激!我难住了!

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

最佳答案

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

您没有说明更改的变量是全局变量、堆分配变量还是局部变量。我猜测堆已分配,在这种情况下,悬挂理论是最有可能的——任何可以合法分配内存的东西(例如 cout)都可以获取和修改您通过 free 释放的内存删除

关于c++ - CYGWIN:内存中的变量自发地改变值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5774295/

相关文章:

bash - 在数百万个 csv 文件上运行 bash 脚本

c++ - 替换字符串数组中所有出现的字母

c++ - 更换 PC 后 Sleep() 变得不太准确? (C++)

c++ - 错误: ‘io_context’不是 ‘boost::asio’的成员,错误: ‘steady_timer’不是 ‘boost::asio’的成员

c - 在 gdb 中观察内存范围?

使用cygwin编译winapi

windows - 隐藏用户输入

c++ - 在 Qt 中设置应用程序主题

c - GDB 在调试快速 fork 并执行另一个程序的多线程程序时崩溃

c++11 - 在 gdb 中调用 std::~basic_string()