读取字符串的字符时出错-访问冲突错误C++

Error reading character of string - Access violation error C++

本文关键字:访问冲突 错误 C++ 出错 字符串 字符 读取      更新时间:2023-10-16

我在C++中处理Kinect v2相关项目,而我不能在函数外使用深度帧(BYTE*)。

它在最初的几分钟内有效,我想运气不错。

然后我出现了错误,比如:

读取字符串的字符时出错

和访问违规错误,并且在某个时间点没有为kinect20.dll加载符号。

这是我调用值的方法。

BYTE* bodyIndex = new BYTE[512*424]; // initialization

HRESULT frameGet(){
//Initialization method if success
    hr = pDepthFrame->AccessUnderlyingBuffer(&m_nDepthBufferSize, &bodyIndex); //Kinect dll method
    prints(depth[300]); // Prints the value every time
    return hr;
}
HRESULT getDepthFrame(){
   if frameGet is success
   prints(bodyIndex[300]); // throws error reading character of string
   return hr; 
}

有人能解释一下我如何每次都能访问bodyIndex数据吗。

当发布完整的代码时,我没有得到任何回应,所以我需要c++的工作原理。

如果假设是正确的,深度数据有时会被kinectdll清理,这样它就会反映出来。

我试着记住错误仍然存在。

提前谢谢。

根据https://msdn.microsoft.com/en-us/library/microsoft.kinect.kinect.idepthframe.accessunderlyingbuffer.aspx

你不需要分配内存。

获取指向深度帧数据的指针。

public:
HRESULT AccessUnderlyingBuffer(
         UINT *capacity,
         UINT16 **buffer
)

buffer Type:UINT16[out]当此方法返回时,包含指向深度帧数据的指针。

如果我正确理解规范,您总是在访问它之前调用AccessUnderlyingBuffer()