Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/152.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 读取访问冲突标志=0x0(第一次机会)_C++_Qt - Fatal编程技术网

C++ 读取访问冲突标志=0x0(第一次机会)

C++ 读取访问冲突标志=0x0(第一次机会),c++,qt,C++,Qt,我有一个通过浮点*指针返回浮点值的函数: QVector3D vertexCoordOnBuffer_floatconst float*bufferPtr, 常数64偏移量, 康斯特·昆特·斯泰德, 常数quint64顶点索引常数 { 如果 返回QVector3D; float xVal=*bufferPtr+offset+vertexIndex*stride+0; 浮动yVal=*bufferPtr+offset+vertexIndex*stride+1; float zVal=*buffer

我有一个通过浮点*指针返回浮点值的函数:

QVector3D vertexCoordOnBuffer_floatconst float*bufferPtr, 常数64偏移量, 康斯特·昆特·斯泰德, 常数quint64顶点索引常数 { 如果 返回QVector3D; float xVal=*bufferPtr+offset+vertexIndex*stride+0; 浮动yVal=*bufferPtr+offset+vertexIndex*stride+1; float zVal=*bufferPtr+offset+vertexIndex*stride+2; QVector3D顶点中心=QVector3DxVal、yVal、zVal; 返回正门; } 我使用以下命令调用函数:

for(quint64 i = 0; i < m_count; ++i) {

    uint vertexIdx = // ... depends on i

    QVector3D vertexCoord = QVector3D();

    vertexCoord = vertexCoordOnBuffer_float(m_posBufferPtr_float, 
                                            m_byteOffsetPos, 
                                            m_byteStridePos, 
                                            vertexIdx);
}
在for循环的某个点上,当循环完成了将近10%时,我遇到了以下异常:


我在调试模式下逐步检查了代码,但无法找出原因。我想知道我的代码中是否有明显的错误

@Scheff在评论中解决了这个问题:

您是否以字节或float大小的倍数给出了offset、stride和vertexIndex的值?关于如何访问数据,后者是正确的。m_byteOffsetPos和m_byteStridePos听起来有些可疑

通过这些修改解决了问题:

uint vertexIdx=/。。。FIX:考虑计算中的siZoFun-Noint int vertexCoord=vertexCoordOnBuffer_float M_posBufferPtr_float, m_byteOffsetPos/sizeoffloat,//修复 m_byteStridePos/sizeoffloat,//修复 vertexIdx;
vertexIdx可能太高,因此xVal和朋友试图删除不属于bufferPtr的内容。请提供一个。m_posBufferPtr_float真的指向一个大小正确的float数组吗?为什么使用指针+大小而不是容器?是否以字节或float大小的倍数给出值offset、stride和vertexIndex?关于如何访问数据,后者是正确的。m_byteOffsetPos和m_byteStridePos听起来有点可疑。@Scheff You solved it=你能发表你的评论作为答案,这样我就可以按答案结束这个问题吗?实际上,你的问题缺乏足够的信息。这简直是一次突然袭击。我记得,虽然我很清楚这个话题,但我还是意外地犯了一个类似的错误你可以自己回答。