C++ VC+中的指针算法(三指针赋值)+;

C++ VC+中的指针算法(三指针赋值)+;,c++,visual-c++,pointers,nullpointerexception,C++,Visual C++,Pointers,Nullpointerexception,我的场景如下(VC++代码): 我调用CreateOffscreenPlainSurface(,,,&p,null)现在p将保存D3D曲面的地址。所以我想把p分配给ppp 所以我在做什么 (*(*ppp)) = p; 但是它抛出了运行时异常。我不明白为什么。有人能帮我一下吗?此作业引发异常,因为您正在向未初始化指针指向的地址写入。在进行赋值之前,需要先为指向指针数组的指针分配内存,然后再为指向指针数组的指针分配内存 ppp = new IDirect3DSurface9**[10]; //

我的场景如下(VC++代码):

我调用
CreateOffscreenPlainSurface(,,,&p,null)
现在p将保存D3D曲面的地址。所以我想把
p
分配给
ppp

所以我在做什么

(*(*ppp)) = p;

但是它抛出了运行时异常。我不明白为什么。有人能帮我一下吗?

此作业引发异常,因为您正在向未初始化指针指向的地址写入。在进行赋值之前,需要先为指向指针数组的指针分配内存,然后再为指向指针数组的指针分配内存

ppp = new IDirect3DSurface9**[10];  // Pick the right size here
ppp[0] = new IDirect3DSurface9*[5]; // Pick the right size here, too
ppp[0][0] = p;
使用完这些数组后,不要忘记
删除[]
它们


如果使用指针指向指针不是一个明确的要求,请考虑使用<代码> STD::vector 。

也许我只是看不到好处,但是为什么你甚至需要一个“代码> *PPPP”?因为变量PPP未初始化,撤销引用*PPP和*PPPPs都是错误的。请问,为什么首先需要IDirect3DSurface9***变量?
ppp = new IDirect3DSurface9**[10];  // Pick the right size here
ppp[0] = new IDirect3DSurface9*[5]; // Pick the right size here, too
ppp[0][0] = p;