我的场景如下:
在调用者函数中::
IDirect3DSurface9 * surf = null;
Func(&surf);
hr = surf->LockRect(, , ); // THROWS an EXCEPTION BCOZ "surf" is still null. Dont know why ??
在 CALLED 函数中:
Func(IDirect3DSurface9 **surfReceive)
{
surfReceive= new IDirect3DSurface9*[10];
IDirect3DSurface9* surfcreate = NULL;
hr = xyz->CreateOffscreenPlainSurface( width,
height,
formt,
D3DPOOL_DEFAULT,
&surfcreate,
NULL);
if (FAILED(hr))
return hr;
surfReceive[0] = surfcreate;
}
我的疑问是,在 CALLER 中(如我在上面的代码中所示),即使在调用者返回后,surf 仍然为空。当我在冲浪上调用 LockRect() 时,它会引发异常,如下所示。
hr = surf->LockRect(, , );
重要的是要注意“CreateOffscreenPlainSurface()”调用返回成功,并且“surfcreate”存储了正确的值,因此 surfReceive[0] 也存储了正确的值。但我认为我在 CALLER 中访问它的方式出错了。