void hello()
{
 BYTE *bTemp=new BYTE[200];
 hello(bTemp); 
}
void test(BYTE * bFeng)
{
  LPBYTE lpTemp=bFeng;
}
最后bTemp的内存会自动释放吗?
不然改怎么释放内存呢?
//谢谢大虾

解决方案 »

  1.   

    in the hello() function, call
    delete bTemp[];
      

  2.   

    谁分配,谁释放。
    用[]分配,用[]释放。
    void hello()
    {
     BYTE *bTemp=new BYTE[200];
     hello(bTemp);
     delete []bTemp; 
    }不负责分配bFeng,所以不负责释放。
    void test(BYTE * bFeng)
    {
      LPBYTE lpTemp=bFeng;
      // 没有负责分配lptemp,所以不负责释放它
    }
      

  3.   

    我现在是发送消息的方式调用test(BYTE *bFeng)的.
    也就是说调用完hello(bTemp)后,test(BYTE *bFeng)还没处理完.
    所以只有在test(BYTE *bFeng)里释放内存了,可以这样做吗?
    void test(BYTE *bFeng)
    {
      BYTE * pTemp=bFeng;
      ......
      delete [] pTemp;
    }
    //谢谢
      

  4.   

    这样不行吧,你可以在hello里面等test结束然后再delete
    不要先让hello退出
      

  5.   

    这样也可以,因为用new分配的内存里带有足够的信息.
    在你调用delete时,会先读出这部分信息,然后释放内存.这样不会造成内存泄漏.
    在一个线程里new,在另一个线程里delete是常用的技巧.