fputws到stderr崩溃应用程序

时间:2013-09-02 15:35:01

标签: c visual-studio-2012

如果我没有做错任何事,我会感到困惑,但是遵循以下代码:

#include <stdio.h>

int main()
{
    fputws(L"this fails.\n", stderr);
    return 0;
}

因我遇到以下异常而崩溃:

Unhandled exception at 0x56BEDABC (msvcr110.dll) in errors.exe: 0xC0000005: Access violation reading location 0x000000A4.

我正在使用MSVC2012。

我试过

  • 切换调试/释放模式(两次崩溃)
  • stderr / stdout(两次崩溃)
  • 切换x86 / x64(两次崩溃)
  • add / subsystem:console to linker(crashes)
  • 在MSVC2010中编译 - 可行!

我有以下版本:

Microsoft Visual Studio Professional 2012
Version 11.0.50727.1 RTMREL
Microsoft .NET Framework
Version 4.5.50709

1 个答案:

答案 0 :(得分:4)

我终于设法谷歌这个问题了,但之前没有提到它,所以链接如下:

http://connect.microsoft.com/VisualStudio/feedback/details/772585/fputws-yields-access-violation

VS2012update1 fixes the problem. msvcr110d.dll version is 11.00.51106.1.

另一种解决方法是在使用fputs("", stderr);之前使用fwputs来正确初始化IO流。