今天遇到一个bug,有如下一段代码:
LPDIRECT3DVERTEXBUFFER9 pVB;
pVB->Lock( 0, 0, (void**)&pTemp, 0 );
int start = 0;
int end = 20;
for(int i = start; i < end; i++)
{
(pTemp + i)->color = 0xffff0000;
}
.........
pVB->Unlock();
.....
pDevice->DrawIndexedPrimitive( D3DPT_LINELIST, 0, 0, VBNUM, 0, 1 );
bug的现象是,程序发布后给客户试用,结果出现崩溃,但是在我们的测试机上从不会出现问题,于是仔细查看代码,发现上面这个vertexbuffer在创建时只创建了18个,而我在上述赋值时将end设置成20造成越界。这种bug往往只是一句话就解决了,但是找到原因很费劲,所以以后遇到类似情况一定要小心!!!!!