今天遇到一个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往往只是一句话就解决了,但是找到原因很费劲,所以以后遇到类似情况一定要小心!!!!!