将MATLAB';移动';或'';复制返回值?
给定以下代码将MATLAB';移动';或'';复制返回值?,matlab,Matlab,给定以下代码 function [out] = doit() out = [1,2,3,4,5,6]; end tmp = doit(); MATLAB会将的内存复制到tmp还是直接移动到tmp?在MATLAB中没有什么比指针更好的了,有 MATLAB似乎很聪明,在需要的时候复制并返回,如果不需要,则通过“指针”(您不知道它)传递。正如@Daniel和@Zeemonkez指出的,这在Loren的博客中进行了讨论,她明确回答了当内存被创建时函数返回的问题。这些帖子的大意是“除非需要,否
function [out] = doit()
out = [1,2,3,4,5,6];
end
tmp = doit();
MATLAB会将
的内存复制到tmp
还是直接移动到tmp
?在MATLAB中没有什么比指针更好的了,有
MATLAB似乎很聪明,在需要的时候复制并返回,如果不需要,则通过“指针”(您不知道它)传递。正如@Daniel和@Zeemonkez指出的,这在Loren的博客中进行了讨论,她明确回答了当内存被创建时函数返回的问题。这些帖子的大意是“除非需要,否则MATLAB不会复制”
基本上,MATLAB将您从内存管理中抽象出来
旁注:如果你真的需要利用这一点,有一些类似指针的东西。见@excaza的评论 :)@excaza嗯,是的,从技术上说是真的,你可以用它做一些奇怪的事情!但这不是一般情况,事实并非如此。Matlab使用写时复制,这意味着out
永远不会被复制。MATLAB句柄变量不是指针,MATLAB也没有指针。