查看堆栈显示为:
768a21f1
KERNEL32! 7c826063()

解决方案 »

  1.   

    内存访问违规!
    在Call Stack里面尽量找到自己的代码
      

  2.   

    是的。PER_HANDLE_DATA *lp;
    SOCKET s = lp->s_hSocket;
    就会出现那个问题,但是这样在Call Stack里是很容易看见在什么地方出错的,但我的程序出错后,Call Stack没任何有用的提示,仅仅两行提示:
    768a21f1
    KERNEL32! 7c826063()
      

  3.   

    看样子你的PER_HANDLE_DATA *lp;好象只是定义了指针,还没分配内存或者指向一块合法内存区么?
      

  4.   

    我是举例子,肯定不会有意那么做,即使那样的话,在call stack里也很容易找到错误位置,现在的错误提示虽然一样,但在call statck里什么也没提示。
      

  5.   

    to DentistryDoctor(牙医的目标是没有蛀牙):
    这样的访问违规发生的代码行怎么找?
      

  6.   

    一般是数组越界。不容易发现。
    例如定义的int a[N],确使用a[N]:
    int a[N];
    a[N]=0;
    特别代码复杂,下标表达式复杂的时候,最容易出这种错误,即使老手也不例外。
      

  7.   

    Call Stack没任何有用的提示,仅仅两行提示:
    768a21f1
    KERNEL32! 7c826063()首先我问你,你是在调试状态下运行debug版吗?
    如果是的话,那就只有楼上说的了,靠经验
      

  8.   

    当然还有一个办法,就是安装操作系统dll的调试符号,能找到出错的函数
      

  9.   

    是在调试状态下运行debug版。
    安装操作系统dll的调试符号?能详细说说吗,谢谢!
      

  10.   

    PER_HANDLE_DATA *lp;
    SOCKET s = lp->s_hSocket;
    就会出现那个问题,但是这样在Call Stack里是很容易看见在什么地方出错的,但我的程序出错后,Call Stack没任何有用的提示,仅仅两行提示:
    768a21f1
    KERNEL32! 7c826063()==============================================
    你的lp是个结构指针,你没有给它分配内存,它现在是个野指针,lp->s_hSocket操作当然后出现访问内存错误
    解决办法:
    方法一:
    PER_HANDLE_DATA *lp = new PER_HANDLE_DATA ;
    SOCKET s = lp->s_hSocket;
    注意此方法在程序退出之前要用
    delete lp;
    lp = NULL;
    释放内存,否则会造成内存泄漏方法二:
    PER_HANDLE_DATA tp;
    ZeroMemory(&tp, sizeof(PER_HANDLE_DATA));
    SOCKET s = tp.s_hSocket;
      

  11.   

    生成map文件btw:今天怎么搞的,好多网都打不开,本来想给楼主一个链接的,可是网页打不开了
      

  12.   

    我现在也出现0xC0000005:Access Violation的问题。
    在Debug下运行,没问题。
    在Release下运行,就出现此问题。
    原因已经找到,正在解决中。
      

  13.   

    对象为null却使用它就会出现这样得问题