我的场景如下(VC ++代码):
IDirect3DSurface9 ***ppp;
IDirect3DSurface9* p;
我致电CreateOffscreenPlainSurface( , , ,&p,null)
,现在p将保留D3D表面的地址。所以我想将p
分配给ppp
。
所以我在做
(*(*ppp)) = p;
但它抛出了运行时异常。我不明白为什么。有人可以帮助我吗?
答案 0 :(得分:3)
此赋值会抛出异常,因为您正在写入未初始化指针指向的地址。您需要为指向指针数组的指针分配内存,然后再分配给指针数组,然后才能进行赋值。
ppp = new IDirect3DSurface9**[10]; // Pick the right size here
ppp[0] = new IDirect3DSurface9*[5]; // Pick the right size here, too
ppp[0][0] = p;
完成这些数组后,不要忘记delete[]
这些数组。
如果使用指向指针的指针不是明确的要求,请考虑使用std::vector<std::vector<IDirect3DSurface9*> >
代替。