你是不是改变了指针的位置。
最好先判断一下是否为null
if (pSocket == NULL )
  delete pSocket;

解决方案 »

  1.   

    thanks,
    都不是,我没有删过,
    请问一下,地址都改变了有哪些原因?
      

  2.   

    如果做了很多内存操作,
    在release下有时候会有莫名其妙的指针改变.(当然很少出现)
    一定要小心.一般地址改变肯定是你改变了它.
    或者new和delete不在一个地方.
    仔细检查一下.
      

  3.   

    thanks lengnuan(冷暖自知),
    请问new和delete不在一个地方是什么意思?
      

  4.   

    *pSocket=new CMySocket;???
    pSocket=new CMySocket;//去掉*,呵呵~~
      

  5.   

    好像你没有分配空间的哦
    应如supperapplication(行星)所说。
      

  6.   

    你是否在一个函数里面new,在另一个函数里面delete,看看你定义是否有错误。
    你的错误就是上面那位老兄说的,开空间的时候错误了。
      

  7.   

    顺便指正jimw(最近有点烦)的一点错误
    程序代码应为
    if (pSocket != NULL )
      delete pSocket; 
      

  8.   

    你的错误应该很简单,debug一下,看看到底在什么地方变了.
      

  9.   

    我写错了,
    是这样: pSocket=new CMySocket;//
      

  10.   

    to jimw && thinp:delete NULL;是正确的,不需要检查非空
      

  11.   

    你可以debug一下,可以看一下pSocket的地址什么时候被改变了?
      

  12.   

    CMySocket *pSocket = new CMySocket;
    if (pSocket == NULL ) return;
    .
    .
    if (pSocket != NULL )
    {
      delete pSocket; 
      pSocket = NULL;//
    }