游戏开发论坛

 找回密码
 立即注册
搜索
查看: 915|回复: 0

help

[复制链接]

1

主题

1

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2007-7-31 14:18:00 | 显示全部楼层 |阅读模式
我遇到了这样一个奇怪的问题:
我的程序中采用:
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造成的?

麻烦各位高人指点一下,谢谢!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2026-1-25 15:42

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表