症状

您有一个应用程序被配置为针对 x64 生成使用的 Msvcr90.dll 文件的平台。应用程序调用strncpy函数。当您运行应用程序时,可能会在 Visual Studio 实时调试器窗口中收到以下错误消息︰

Application_name中发生未处理的 win32 异常

检查调用堆栈时,您可能会发现在 Msvcr90.dll 文件中引发访问冲突,应用程序停止响应strncpy函数中。满足以下条件时,会发生此问题:

  • 源缓冲区扩展到已分配的页的结尾。

  • 此页之后的下一个字节不属于正在运行的进程。

  • 要复制长度为偶数的 8 倍。

  • 要复制的长度包含源缓冲区的最后一个字节。

原因

发生此问题是因为strncpy函数尝试在源缓冲区后访问下一个字节。通过新的某些 CRT 库函数的优化引入了此问题。

解决方案

修补程序信息

受支持的修补程序现已从 Microsoft 推出。但是,它被用于纠正本文中描述的问题。它仅应用于正经历此特定问题的系统。此修补程序可能会接受进一步的测试。因此,如果这个问题没有对您造成严重的影响,我们建议您等待包含此修复程序的下一步的 Visual Studio 2008 service pack。

要立即解决此问题,请联系 Microsoft 客户支持服务,以获取此修复程序。Microsoft 客户支持服务的电话号码以及有关支持费用的信息的完整列表,请访问下面的 Microsoft 网站:

http://support.microsoft.com/contactus/?ws=support注意:在特殊情况下,如果 Microsoft 支持专业人员确定某个特定的更新能够解决您的问题,可能取消的通常情况下收取的电话支持服务费用。照常收取支持费用将应用于其他支持问题和对于特定更新无法解决的问题。

系统必备组件

您必须具有要应用此修补程序的安装的 Visual Studio 2008 Service Pack 1。

重启要求

应用此修补程序后,不需要重新启动计算机。

修补程序替换信息

此修补程序不替换任何其他修补程序。

文件信息

此修复程序的英文版具有的文件属性 (或更新的文件属性)在下表中列出。日期和为这些文件的时间以协调世界时 (UTC) 列出。当您查看文件信息时,它将转换为本地时间。要了解 UTC 与本地时间之间的时差,请使用控制面板中的日期和时间项中的时区选项卡。

文件名称

文件版本

文件大小

日期

时间

平台

Atl90.dll

9.0.30729.162

159,552

14-Oct-2008

02:32

x86

Mfc90.dll

9.0.30729.162

5,084,480

14-Oct-2008

01:12

x64

Mfc90.dll

9.0.30729.162

3,766,080

14-Oct-2008

02:32

x86

Mfc90chs.dll

9.0.30729.162

36,680

14-Oct-2008

01:12

x64

Mfc90chs.dll

9.0.30729.162

36,680

14-Oct-2008

02:32

x86

Mfc90cht.dll

9.0.30729.162

37,704

14-Oct-2008

01:12

x64

Mfc90cht.dll

9.0.30729.162

37,704

14-Oct-2008

02:32

x86

Mfc90d.dll

9.0.30729.162

7,419,200

14-Oct-2008

01:12

x64

Mfc90d.dll

9.0.30729.162

5,934,912

14-Oct-2008

02:32

x86

Mfc90deu.dll

9.0.30729.162

64,328

14-Oct-2008

01:12

x64

Mfc90deu.dll

9.0.30729.162

64,328

14-Oct-2008

02:32

x86

Mfc90enu.dll

9.0.30729.162

54,600

14-Oct-2008

01:12

x64

Mfc90enu.dll

9.0.30729.162

54,600

14-Oct-2008

02:32

x86

Mfc90esn.dll

9.0.30729.162

62,792

14-Oct-2008

01:12

x64

Mfc90esn.dll

9.0.30729.162

62,792

14-Oct-2008

02:32

x86

Mfc90esp.dll

9.0.30729.162

62,792

14-Oct-2008

01:12

x64

Mfc90esp.dll

9.0.30729.162

62,792

14-Oct-2008

02:32

x86

Mfc90fra.dll

9.0.30729.162

63,816

14-Oct-2008

01:12

x64

Mfc90fra.dll

9.0.30729.162

63,816

14-Oct-2008

02:32

x86

Mfc90ita.dll

9.0.30729.162

62,280

14-Oct-2008

01:12

x64

Mfc90ita.dll

9.0.30729.162

62,280

14-Oct-2008

02:32

x86

Mfc90jpn.dll

9.0.30729.162

44,360

14-Oct-2008

01:12

x64

Mfc90jpn.dll

9.0.30729.162

44,360

14-Oct-2008

02:32

x86

Mfc90kor.dll

9.0.30729.162

43,848

14-Oct-2008

01:12

x64

Mfc90kor.dll

9.0.30729.162

43,848

14-Oct-2008

02:32

x86

Mfc90u.dll

9.0.30729.162

5,103,424

14-Oct-2008

01:12

x64

Mfc90u.dll

9.0.30729.162

3,781,440

14-Oct-2008

02:32

x86

Mfc90ud.dll

9.0.30729.162

7,464,264

14-Oct-2008

01:12

x64

Mfc90ud.dll

9.0.30729.162

5,980,488

14-Oct-2008

02:32

x86

Mfcm90.dll

9.0.30729.162

67,072

14-Oct-2008

00:50

x64

Mfcm90.dll

9.0.30729.162

59,904

14-Oct-2008

00:20

x86

Mfcm90d.dll

9.0.30729.162

93,184

14-Oct-2008

00:50

x64

Mfcm90d.dll

9.0.30729.162

80,896

14-Oct-2008

00:20

x86

Mfcm90u.dll

9.0.30729.162

67,072

14-Oct-2008

00:50

x64

Mfcm90u.dll

9.0.30729.162

59,904

14-Oct-2008

00:20

x86

Mfcm90ud.dll

9.0.30729.162

93,696

14-Oct-2008

00:50

x64

Mfcm90ud.dll

9.0.30729.162

80,896

14-Oct-2008

00:20

x86

Mfcmifc80u.dll

9.0.30729.162

14,152

20-Oct-2008

17:19

x86

Microsoft.visualc.stlclr.dll

9.0.30729.162

49,000

20-Oct-2008

17:19

x86

Msvcm90.dll

9.0.30729.162

225,280

13-Oct-2008

21:59

x86

Msvcm90.dll

9.0.30729.162

324,096

13-Oct-2008

22:36

IA-64

Msvcm90.dll

9.0.30729.162

245,760

13-Oct-2008

23:40

x64

Msvcm90d.dll

9.0.30729.162

312,832

13-Oct-2008

21:59

x86

Msvcm90d.dll

9.0.30729.162

429,568

13-Oct-2008

22:37

IA-64

Msvcm90d.dll

9.0.30729.162

333,312

13-Oct-2008

23:40

x64

Msvcp90.dll

9.0.30729.162

1,467,208

14-Oct-2008

00:56

IA-64

Msvcp90.dll

9.0.30729.162

854,344

14-Oct-2008

01:12

x64

Msvcp90.dll

9.0.30729.162

570,696

14-Oct-2008

02:32

x86

Msvcp90d.dll

9.0.30729.162

2,514,760

14-Oct-2008

00:56

IA-64

Msvcp90d.dll

9.0.30729.162

1,121,608

14-Oct-2008

01:12

x64

Msvcp90d.dll

9.0.30729.162

873,288

14-Oct-2008

02:32

x86

Msvcr90.dll

9.0.30729.162

1,504,584

14-Oct-2008

00:56

IA-64

Msvcr90.dll

9.0.30729.162

624,456

14-Oct-2008

01:12

x64

Msvcr90.dll

9.0.30729.162

653,640

14-Oct-2008

02:32

x86

Msvcr90d.dll

9.0.30729.162

3,599,688

14-Oct-2008

00:56

IA-64

Msvcr90d.dll

9.0.30729.162

1,349,960

14-Oct-2008

01:12

x64

Msvcr90d.dll

9.0.30729.162

1,178,440

14-Oct-2008

02:32

x86

Vcomp90.dll

9.0.30729.162

142,664

14-Oct-2008

00:56

IA-64

Vcomp90.dll

9.0.30729.162

57,672

14-Oct-2008

01:12

x64

Vcomp90.dll

9.0.30729.162

52,040

14-Oct-2008

02:32

x86

Vcomp90d.dll

9.0.30729.162

317,256

14-Oct-2008

00:56

IA-64

Vcomp90d.dll

9.0.30729.162

105,800

14-Oct-2008

01:12

x64

Vcomp90d.dll

9.0.30729.162

89,416

14-Oct-2008

02:32

x86

Vcomp90ui.dll

9.0.30729.162

11,592

20-Oct-2008

17:19

x86

Vcredist_ia64.exe

9.0.30729.162

4,712,272

14-Oct-2008

19:32

x86

Vcredist_x64.exe

9.0.30729.162

5,236,560

14-Oct-2008

19:36

x86

Vcredist_x86.exe

9.0.30729.162

4,496,208

14-Oct-2008

19:28

x86

解决方法

若要变通解决此问题,请使用下列方法之一:

  • 更改任何"症状"部分所述的四个条件。

  • 替换为其他具有类似的功能,如memcpy函数或lstrcpyn函数的函数strncpy函数。

    注意:这些复制函数是略有不同。例如, memcpy函数没有结束字符串副本,遇到 null 字节之前指定的长度。

状态

Microsoft 已经确认这是“适用于”一节中列出的 Microsoft 产品中的问题。

详细信息

有关软件更新术语的详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:

用于描述 Microsoft 软件更新的标准术语的824684说明

需要更多帮助?

扩展你的技能
了解培训
抢先获得新功能
加入 Microsoft 内部人员

此信息是否有帮助?

你对语言质量的满意程度如何?
哪些因素影响了你的体验?

谢谢您的反馈!

×