|
|
我遇到了这样一个奇怪的问题:
我的程序中采用:
DDSURFACEDESC2 ddsDesc;
ZeroMemory(&ddsDesc, sizeof(ddsDesc));
ddsDesc.dwSize = sizeof(ddsDesc);
HRESULT hret = m_pDdsOffscreen->Lock(NULL, &ddsDesc,DDLOCK_WRITEONLY|DDLOCK_SURFACEMEMORYPTR,NULL);
if(hret == DD_OK)
{
m_pSurface = ddsDesc.lpSurface;
m_lPitch = ddsDesc.lPitch;
}
来将一个surface锁住,然后再利用指向surface的指针m_pSurface来对这个surface所在的内存进行写操作。最后在利用:
m_pDdsOffscreen->Unlock(NULL);
对上面锁住的surface进行解锁。
我的程序在大多数的机子上执行正常。但就在我们的一个客户的机子上发上了crash,而从crash report上可以看出发生crash的地方在我对我所锁住的surface进行写操作上。
我不明白为什么我对锁住的surface进行写的操作,怎么会发生crash,而且是有时会有时不会。
是不是我对这个surface进行了较长的时间的lock造成的?
麻烦各位高人指点一下,谢谢! |
|