将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也没有指针。