我们可以知道mxRealloc或mxMalloc返回的指针的长度吗?

时间:2016-03-22 18:27:56

标签: c matlab mex

鉴于mxGetPrmxRealloc返回的指针,我们仍能获得它的长度吗?由于MATLAB管理指针的内存,它是否存储元数据供我们查询?

1 个答案:

答案 0 :(得分:0)

你的问题有点不清楚,所以让我试着解释这两个函数:

    在现有的mxGetPr数值数组上调用
  • mxArray来检索指向其数据的指针(确切地说,是指向double实数据的指针)。如果您想知道此数据的长度,可以使用mxGetNumberOfElements查询原始数组。

  • mxRealloc和相关功能类似于C中提供的标准malloc系列功能。因此,如果您正在使用它们,那么您知道它们的大小,因为您&# 39;重新分配内存!

mxRealloc和相关函数的目的是允许MATLAB在一定程度上自动管理内存;因此,当MEX函数返回时,MATLAB负责释放分配了mxMalloc等任何已注册的堆内存。

现在编写好的代码意味着你应该释放你自己的内存(如果依赖于这种自动内存管理,它可能会减慢速度),但在某些情况下确实会派上用场(想想在没有MEX函数的情况下抛出错误)依赖丑陋的goto语句来确保在退出时释放资源。