访问冲突读取位置0x00000002

时间:2014-01-05 16:18:50

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

我的代码得到以下错误:

  

CChatClient.exe中0x00b09736处的未处理异常:0xC0000005:访问冲突读取位置0x00000002。

我无法发布整个代码,因此粘贴了错误发生的代码部分..

> static void run_thread(void *args)
    {
        CThreadRunnable *pRunnable = static_cast<CThreadRunnable*>(args);
        int* actual_arg = (int *)args;
        if (*actual_arg)
        {
            PRINTD "value of arg=" << *actual_arg << std::endl;
            pRunnable->run(actual_arg);
        }
    }

在第5行,运行时异常即将到来。 我无法在visual studio 10上调试此错误。 有人可以帮忙,如何在visual studio编译器上调试这种错误。

谢谢, 拉文德拉古普塔

2 个答案:

答案 0 :(得分:3)

if (*actual_arg)

如果此行导致错误,则actual_arg为2,您尝试将其作为指针处理并取消引用它。您不能查看内存地址2并获取访问冲突。

猜猜,我会说你把你的变量而不是它的地址传递给了函数。

编辑:

你的签名错了。

static void run_thread(void *args)

Correct将是

static DWORD run_thread(void* args)

答案 1 :(得分:0)

转到Debug-&gt;例外。检查两个“系统运行时异常”的复选框(名称可能是其他内容,我不记得确切的名称)。