5
考慮下面的代碼MATLAB會'移動'或''複製返回值嗎?
function [out] = doit()
out = [1,2,3,4,5,6];
end
tmp = doit();
將MATLAB的out
內存複製到tmp
,或直接將它移動到tmp
?
考慮下面的代碼MATLAB會'移動'或''複製返回值嗎?
function [out] = doit()
out = [1,2,3,4,5,6];
end
tmp = doit();
將MATLAB的out
內存複製到tmp
,或直接將它移動到tmp
?
在MATLAB中沒有什麼像指針,有local workspaces。
似乎MATLAB很聰明,只要需要就做一個副本並返回,如果不需要,就通過「指針」(不知道它)。正如@Daniel和@zeeMonkeez指出的那樣,在Loren的博客here中對此進行了討論,她在here內部創建了內存時明確回答了函數返回問題。在這些帖子中的總體思路是「MATLAB不會複製,除非它需要」基本上MATLAB從內存管理中抽象出你。
旁註:有類似的指針,如果你真的需要利用這一點。請參閱@excaza的評論。
[你可以在MATLAB指針(ish)](http://www.matlabtips.com/how-to-point-at-in-matlab/):) – excaza
@excaza好,是的,技術上是真的,你可以用它做一些奇怪的事情!但那不是一般情況。 –
這是不正確的。 Matlab使用copy-on-write這意味着out將永遠不會被複制。 – Daniel