1

私のシナリオは次のとおりです(VC++コード):

IDirect3DSurface9 ***ppp;
IDirect3DSurface9* p;

呼び出すCreateOffscreenPlainSurface( , , ,&p,null)と、p は D3D サーフェスのアドレスを保持します。だから私はに割り当てたいpですppp

だから私はやっている

(*(*ppp)) = p;

しかし、ランタイム例外をスローしています。理由がわかりません。誰でも親切にこれを手伝ってもらえますか?

4

1 に答える 1

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*> >代わりに使用を検討してください。

于 2012-06-01T14:20:59.693 に答える