char *pBuf = new char(100);
A* p = (A*)pBuf;
..............
DeviceIOControl(...A,);
对A进行操作.
..............
delete pBuf;   //非法(有时候)

解决方案 »

  1.   

    这个问题的描述有问题吧?A应该是类型吧?类型怎么作为函数的参数呢?就算是template,也只能成为类型参数而不是用参数阿……
      

  2.   

    delete pBuf;   //非法(有时候)
      这是什么话???什么叫有时候非法???这句肯定不会错,不过,如果后面还与这个指针有关的话,你应该放在析构函数中释放,有错误的话,最好释放前先if一下!!
      

  3.   

    回复人: wallgrid(Grid) ( ) 信誉:100  2005-07-03 18:13:00  得分: 0  
     
     
       delete[] pBuf
      
     
    =======================
    又不是new char[100]出来的,是new char(100)……
      

  4.   

    在另一个模块中释放,当调试时应该会产生错误。在RELEASE模式下,不产生错误,但是不会去释放内存。
    改成VirtualAlloc(),VirtualFree()或SysStrinAlloc(),SysStringFree()不会有这个问题。