【发布时间】:2012-05-22 15:00:12
【问题描述】:
我在 2 周前得到了这个运行良好的程序,我没有更改它现在崩溃的任何部分。
例如,以这个 sn-p 为例:(假设 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");崩溃
【问题讨论】:
-
无关:不用笨拙的
for循环,你可以简单地循环while(is >> c)。 -
您能否发布一个完整的、自包含的可编译示例来说明问题?因为我们不知道您的代码引用的任何东西实际上是什么。 (该错误可能在此代码之前运行的代码中。)
-
Works fine here,您的问题在于您没有向我们展示的代码。
-
@perelo - 错误可能在您已更改的部分中。覆盖内存会在程序的其他部分产生奇怪的影响。喜欢这个。
-
在 Windbg 下运行调试版本,您可能会比现在更早看到异常,当前指向的是近因而不是最终消亡