未处理的异常VS2010 C++

Unhandled exception VS2010 C++

本文关键字:C++ VS2010 异常 未处理      更新时间:2023-10-16

我正在尝试在windows上制作一个套接字来连接到服务器。

我使用的是msdn网站上的代码,winsock客户端代码
(链接:msdn.microsoft.com/en-us/library/windows/desktop/ms737591(v=vs.100).aspx)

在任何情况下,当我尝试调试所述代码时,我会收到错误消息:

Unhandled exception at 0x58a714cf (msvcr100d.dll) in Application.exe: 0xC0000005: Access violation reading location 0x00000032.

它会问我是想中断还是继续,如果我继续,同样的错误消息就会不断弹出。如果我按下break,它会把我带到文件output.c.中的第1643行

简单地说,我不知道该怎么做才能让它发挥作用,我很感激任何帮助。

编辑:

对迄今为止所有评论的回复:

输出.c中周围的相关代码是:

if (flags & (FL_LONG|FL_WIDECHAR)) {
if (text.wz == NULL) /* NULL passed, use special string */
text.wz = __wnullstring;
bufferiswide = 1;
pwch = text.wz;
while ( i-- && *pwch )
++pwch;
textlen = (int)(pwch - text.wz);
/* textlen now contains length in wide chars */
} else {
if (text.sz == NULL) /* NULL passed, use special string */
text.sz = __nullstring;
p = text.sz;
while (i-- && *p) //THIS IS WHERE IT BREAKS
++p;
textlen = (int)(p - text.sz);    /* length of the string */
}

这不是我写的代码,而是已经存在的固有代码。

编辑编号2:这是一个显示我的调用堆栈的打印屏幕。我没有10的声誉,所以我不能显示图像,所以这里有一个链接到图像:

http://tinypic.com/r/5n6ww9/5

在上面你可以看到我的调用堆栈

文件output.c包含处理printf函数族的代码。

这里出现错误的原因可能是代码中的printf函数调用格式错误。可能您指定了无效的打印格式,或者没有提供足够的参数。

当程序崩溃时,单击Break并查看调试窗口中的调用堆栈,以查看函数在代码中的调用位置以及参数。

我怀疑你试图打印一个空字符串或其他什么。找到printf调用后(如果是这样的话),请编辑问题以显示源代码的该部分,和/或使用调试器检查函数参数使用的变量,并确保它们都是正确的。

如果没有看到你在崩溃地点写的代码,就不可能给出更准确的答案。

或者您可以向CString.format插入一个空字符串,如下所示:

CString str;
str.format("%s"); //A null string

应该是

str.format("%s",mes);

其中meschar mes[20],例如

或任何其他可变

所以重点是CString.formatPrintf可能存在一些错误

祝你好运。