我的服务器运行一段时间后,在new一个对象时,
出现“Unhandled exception in Server.exe (MSVCRT.DLL):0xC0000005 Access Violation”
异常,请问会是什么原因导致的呢?

解决方案 »

  1.   

    我搜索了以前的帖子,好像说是空指针或者空句柄会导致。
    但是我是 ACE_Message_Block *mb = new ACE_Message_Block(100);怎么也会出现这样的错误呢?
      

  2.   

    首先你要确定到底是不是new引起的,然后再着手解决。这个异常是在MSVCRT.DLL内发生的,可以在new的地方用try抓这个异常,看看是什么原因try
    {
    ...new
    }
    catch(...)
    {
    ....
    }
      

  3.   

    catch里面如何写,才能确定是什么异常?
      

  4.   

    我是F5调试的,定位到了 “ACE_Message_Block *mb = new ACE_Message_Block(100);”,虽然每次在不同的函数,但是都是new ACE_Message_Block的时候出问题的。
      

  5.   

    ACE_Message_Block这个是自己写的类吧。你看看构造函数是怎么写的??
    100代表什么意思?是个数还是一个值?
    如果是个数,应该这样申请:
    ACE_Message_Block *mb = new ACE_Message_Block[100];
      

  6.   

    ACE_Message_Block 是个类,100是分配的空间,现在是为什么有时候new没错,而过了一段时间后就出错。
      

  7.   

    多线程有关吗?
    我写了个测试程序,就是开3个线程,new 一段内存,然后释放delete,过了一会儿就会出现内存读或者写错误。