出了函数,pBuffer仍然是NULL,好像是生存期和作用域的问题吧?!

解决方案 »

  1.   

    这样好了,一定没有问题的啦:
    Transfer(BYTE*& pBuffer)
    {...}
      

  2.   

    void Transfer(BYTE** pBuffer)
    {
      *pBuffer=new ...
    }
    BYTE* pBuf;
    Transfer(&pBuf);
      

  3.   

    传值就是传一份参数值的COPY进去,参数原来的值不变
    传址就是把参数的地址传进去,任何在函数里针对这个地址的改变就会改变参数原来的值!
      

  4.   

    void Transfer(BYTE*& pBuffer)
    {
      pBuffer=new ...
    }
    BYTE* pBuf;
    Transfer(pBuf);
      

  5.   

    你原来那样Transfer(BYTE* pBuffer)传过去的指针,在Transfer函数里改变的是指针pBuffer所指的"内容",虽然,你在函数里分配了内存,但是调用Transfer函数后仍然没有改变pBuffer,所以pBuffer=NULL。
    实际上,调用函数时是酱紫:Transfer(pBuffer),这里指针变量pBuffer的“值”是按传值传过去的,相当于 Transfer(NULL),在Transfer函数调用完后,而pBuffer的“值”没有任何变化。
    如果将这个函数参数的指针形参改变成引用Transfer(BYTE*& pBuffer),就不同了
      

  6.   

    两个pBuffer 不是一个变量 ,不信你改个名字试试