给出以下代码
function [out] = doit()
out = [1,2,3,4,5,6];
end
tmp = doit();
MATLAB会将out
的内存复制到tmp
还是直接将其移至tmp
?
答案 0 :(得分:7)
在MATLAB中没有像指针那样的东西,有local workspaces。
似乎MATLAB很聪明,只要需要就可以复制并返回,如果不需要则通过“指针”(不知道它)。正如@Daniel和@zeeMonkeez指出的那样,这在Loren的博客here中进行了讨论,当在here内创建内存时,她明确回答了函数返回。这些帖子中的一般想法是“除非需要,否则MATLAB不会复制”
基本上,MATLAB从内存管理中抽象出来。
Sidenote :如果你真的需要利用这个,那就像指针一样。请参阅@ excaza的评论。