MEX C++ 原始数据访问
MEX C++ raw data access
我正在尝试根据答案 here 访问传递给 MEX C++ 函数的 MATLAB 矩阵的原始数据。奇怪的是,我每次都会遇到内存访问错误。如何访问原始数据?
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;
}
[...]
}
问题已通过显式存储从 release() 方法返回的指针解决。好像不然数据丢了。
TypedArray<uint32_t> dataArray = std::move(inputs[0]);
auto dataPtr = dataArray.release();
uint32_t* dataRaw = dataPtr.get();
我正在尝试根据答案 here 访问传递给 MEX C++ 函数的 MATLAB 矩阵的原始数据。奇怪的是,我每次都会遇到内存访问错误。如何访问原始数据?
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;
}
[...]
}
问题已通过显式存储从 release() 方法返回的指针解决。好像不然数据丢了。
TypedArray<uint32_t> dataArray = std::move(inputs[0]);
auto dataPtr = dataArray.release();
uint32_t* dataRaw = dataPtr.get();