关于函数调用 指针为空的有关问题.

关于函数调用 指针为空的问题....
//   自己定义的函数.
void   __fastcall   TForm1::SetMemory(BYTE   *p1,   BYTE   *p2,   BYTE   *p3,   int   size)
{
        p1   =   new   BYTE[size];
        p2   =   new   BYTE[size];
        p3   =   new   BYTE[size];

        memset(p1,   0,   size);
        memset(p2,   0,   size);
        memset(p3,   0,   size);
}
...
//   然后在主函数中调用
void   __fastcall   TForm1::Button1Click(TObject   *Sender)
{
        ...
        SetMemory(pR,   pG,   pB,   (Height   *   Width));
        ...
}

执行后pR,pG,pB为空,请问哪里出了问题?


------解决方案--------------------
典型的错误,值传递显然不行
应声明成这样SetMemory(BYTE **p1, BYTE **p2, BYTE **p3, int size)

------解决方案--------------------
void __fastcall TForm1::SetMemory(BYTE **p1, BYTE **p2, BYTE **p3, int size)
{
*p1 = new BYTE[size];
*p2 = new BYTE[size];
*p3 = new BYTE[size];

memset(*p1, 0, size);
memset(*p2, 0, size);
memset(*p3, 0, size);
}
...
// 然后在主函数中调用
void __fastcall TForm1::Button1Click(TObject *Sender)
{
BYTE *pR, *pG, *pB;
SetMemory(&pR, &pG, &pB, (Height * Width));
...
}