关于函数调用 指针为空的有关问题.
关于函数调用 指针为空的问题....
// 自己定义的函数.
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));
...
}
// 自己定义的函数.
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));
...
}