pResult   =   (PacketAnalyseResult*)historyBuffer.GetAt(i); 跟踪一下,地址是否没有改变,pResult里的操作是否越界了?

解决方案 »

  1.   

    还有,pResult是不是正常的堆的指针,而不是栈上的
      

  2.   

    还有可能 你delete 了 两次
      

  3.   

    Expression:_CrtIsValidHeapPointer(pUserData)这是一个判断指针是否有效的断言我猜测,你这个操作
    delete   pResult;     //如果屏蔽掉这一段就不会出错
    pResult   =NULL; 
    可能只是个表面现象。
    原因可能跟historyBuffer内部有关系
      

  4.   

    这个指针指向了非法地址,或者根本就是个野指针,比如
    int *pInt;  //  此外,pInt指向的地址,谁都不知道。
    delete pInt;   //  pInt可能不是NULL或者delete 了一个有效的pInt之后,没有pInt = NULL,下次又delete,也会有这个问题。