两周前我得到了这个运行良好的程序,我没有更改它现在崩溃的任何部分。
例如,采用以下代码片段:(假设 is
是有效的 istream
并包含 <tag>
)
std::string Str;
char c;
for ( ; is >> c; )
{
std::cout << c << std::flush;
Str += c;
}
输出:
<
然后崩溃。
我正在使用 Windows 和 mingGW,崩溃是一个窗口,显示我的程序遇到错误,Windows 正在尝试修复它...
但这还不是全部,它与 Str = c;
一样崩溃。或者初始化时:std::string Str ("op");
在我发现此错误 30 分钟后,我在一行中收到了另一个错误(在第一个错误之前):
osstr.write((char *) Word, 16);
哪里osstr
是有效的 ostringstream 并且 Word 是填充的 unsigned char *
编辑:
问题可能不在代码中。因为对字符串构造函数的简单调用会崩溃。
std::string Str ("")
作品
std::string Str ("str");
崩溃
最佳答案
好的,很抱歉信息不完整,但我无法为您提供完整的代码。
问题来自于缓冲区溢出,早在上面的代码没有崩溃之前。
关于c++ - 访问内存时发生奇怪的崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10704650/