C ++ |抛出异常...访问冲突读取位置错误

时间:2017-02-07 23:46:09

标签: c++

我正在尝试在我正在进行的一个小项目中实现牛顿物理。我写了一个解析器来在Half-Life 1中实现它。

当我尝试在地图中使用它时,会抛出Access违规错误。它的位置是0xFFFFFFF0。

当我尝试在Visual Studio 2015中使用Debug时,它指向了我。

bmodels[ modelNum ] =   NewtonCreateConvexHull( m_pWorld, numVerts, ( float* )&verts[ 0 ][ 0 ], 12, NULL );

所以我很茫然。完整功能可在http://pastebin.com/W6NAs2hM上找到。

1 个答案:

答案 0 :(得分:0)

基于您的代码非常快速并基于您描述的错误,看起来您正在访问您的阵列超出范围。

您开始索引为1的初始for循环,即modelNum = 1

for( int modelNum = 1; modelNum < m_iNumModels; modelNum++ )

然后在行

bmodels[ modelNum ] =   NewtonCreateConvexHull( m_pWorld, numVerts, ( float* )&verts[ 0 ][ 0 ], 12, NULL ); 

您尝试访问bmodels[1],但实际上它应该是bmodels[0],因为0始终是数组的第一个索引。