鉴于mxGetPr
或mxRealloc
返回的指针,我们仍能获得它的长度吗?由于MATLAB管理指针的内存,它是否存储元数据供我们查询?
答案 0 :(得分:0)
你的问题有点不清楚,所以让我试着解释这两个函数:
mxGetPr
数值数组上调用 mxArray
来检索指向其数据的指针(确切地说,是指向double
实数据的指针)。如果您想知道此数据的长度,可以使用mxGetNumberOfElements
查询原始数组。
mxRealloc
和相关功能类似于C中提供的标准malloc
系列功能。因此,如果您正在使用它们,那么您知道它们的大小,因为您&# 39;重新分配内存!
mxRealloc
和相关函数的目的是允许MATLAB在一定程度上自动管理内存;因此,当MEX函数返回时,MATLAB负责释放分配了mxMalloc
等任何已注册的堆内存。
现在编写好的代码意味着你应该释放你自己的内存(如果依赖于这种自动内存管理,它可能会减慢速度),但在某些情况下确实会派上用场(想想在没有MEX函数的情况下抛出错误)依赖丑陋的goto语句来确保在退出时释放资源。