matlab - 函数句柄的内存大小 - MATLAB

标签 matlab function memory closures anonymous-function

我的结构中的一个字段是函数句柄:

strct.handl=@(arg1,arg2)handl(arg1,arg2,par1,par2)

现在,每次使用句柄时都会定义 arg1 和 arg2,但是在定义句柄时会存储 par1 和 par2。因此,(如果我错了,请纠正我),处理函数,如指向 par1 和 par2 的指针。

无论哪种情况,我的问题是我如何才能看到我的内存句柄中占用了多少空间,因为它也“指向”par1 和 par2。但是,如果我使用 whos('handl') ,我只会得到句柄的大小,不会得到句柄+par1+par2。

谢谢!

最佳答案

当你构造匿名函数时,你正在创建一个 closure (该函数捕获在其外部范围内定义的任何变量)。

您可以使用 functions 获取函数句柄的捕获工作区的方法:

>> a = 1;
>> f = @(x) x+a;
>> S = functions(f)
S = 
     function: '@(x)x+a'
         type: 'anonymous'
         file: ''
    workspace: {[1x1 struct]}
>> S.workspace{1}
ans = 
    a: 1

我只想解决@DankMasterDan 指出的内存使用问题; MATLAB 使用 copy-on-write策略,因此如果封闭工作区中的变量在被捕获后没有更改,则不会产生额外的内存使用。

关于matlab - 函数句柄的内存大小 - MATLAB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16702080/

相关文章:

matlab - 尝试在 MATLAB 中编写一个函数来播放给定音符(频率)和长度向量的歌曲

php - 如何创建一个函数来从数据库中获取值

ios - 在Objective-c编程中连续调用 "SetNeedDisplay"方法时收到内存警告

python - python中导入模块的数量会影响内存和性能吗?

matlab - Logistic回归中的成本函数得出NaN作为结果

arrays - 删除除侧翼非零值之外的所有零值

matlab - 从Matlab开始的模拟输入

javascript - 从性能 Angular 来看函数声明与表达式?

c# - 我如何创建一个可以从 c# 调用的 cpp 函数,并将函数作为参数

ios - UIScrollView 失去对委托(delegate)的引用