简体   繁体   English

MEX C ++原始数据访问

[英]MEX C++ raw data access

I'm trying to access the raw data of a MATLAB matrix passed to a MEX C++ function based on the answer here . 我试图根据此处的答案访问传递给MEX C ++函数的MATLAB矩阵的原始数据。 Strangely, I get a memory access error every time. 奇怪的是,我每次都会遇到内存访问错误。 How do I access the raw data? 如何访问原始数据?

void operator()(matlab::mex::ArgumentList outputs, matlab::mex::ArgumentList inputs)
{
    TypedArray<uint32_t> dataArray = std::move(inputs[0]);
    uint32_t* dataRaw = dataArray.release().get();

    for (auto& elem : dataArray)
    {
        elem *= 2; // Works
        uint32_t x = (*dataRaw); // Memory access error
        ++dataRaw;
    }
[...]
}

The problem was solved by storing the pointer returned from the release() method explicitly. 通过显式存储从release()方法返回的指针,解决了该问题。 It seems that the data is lost otherwise. 看来数据丢失了。

TypedArray<uint32_t> dataArray = std::move(inputs[0]);
auto dataPtr = dataArray.release();
uint32_t* dataRaw = dataPtr.get();

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM