未处理的异常VS2010 C ++

时间:2013-12-30 12:58:00

标签: c++ visual-studio-2010 unhandled-exception

我正在尝试在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,它会将我带到输出文件中的第1643行。

简单地说,我不知道如何使其发挥作用,我很感激任何给予的帮助。

编辑:

对迄今为止给出的所有评论的答复:

output.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 */
            }

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

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

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

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

2 个答案:

答案 0 :(得分:2)

文件output.c具有处理printf函数族的代码。

此处出现错误的原因可能是您的代码中的printf函数调用格式不正确。也许您指定了无效的打印格式或者没有提供足够的参数。

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

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

如果没有看到您编写的代码,在崩溃的位置,就无法给出更准确的答案。

答案 1 :(得分:1)

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

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

应该在哪里

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

其中meschar mes[20],例如

或任何其他变量

所以关键是CString.formatPrintf

可能存在一些错误

祝你好运。