如果你在delete p 后面用到
if(p)
 ...那你就需要在delete后 p = NULL;要是不用的话,可以不用写  p = NULL;
delete p 就是释放资源
p = NULL 只是给变量赋值,而不能释放资源

解决方案 »

  1.   

    那哪些情况下我需要释放资源?释放资源都需要用到delete吗?
      

  2.   

    当p需要频繁使用时,首先应该在定义或初始化时,这样:
    char *p = NULL ;
    当使用时,首先:
    if(p==NULL)
      

  3.   

    只要你new了,就要delete
    一般情况下指针在delete后都要指向空值一下!
      

  4.   

    当p需要多次使用时,首先应该在定义或初始化时:
    char *p ;
    p = NULL ;只是给变量赋值,而不能释放资源 当使用时,首先:
    if(p==NULL)
    p = new char[len] ;  分配资源当使用完成,需要释放空间
    delete []p ;  释放资源
    p = NULL ;
    以便下次使用时进行判断。如果P不是多次使用,则不需要p = NULL ;
    只需p =  new char[] ;分配资源。
    使用完成,一定要:delete []p ;释放资源。
      

  5.   

    COM Smart Ptr才需要_ApplactionPtr spApp = ...
    ...
    spApp = NULL;