MATLAB'移动'还是''复制返回值?

Joe*_*e C 5 matlab

给出以下代码

function [out] = doit() 
   out = [1,2,3,4,5,6];
end

tmp = doit();
Run Code Online (Sandbox Code Playgroud)

MATLAB 会将内存复制outtmp或直接移动到tmp

And*_*uri 7

在MATLAB中没有像指针那样的东西,有本地工作空间.

似乎MATLAB是智能的,并且在需要时进行复制和返回,并且如果不需要则通过"指针"(不知道它).正如@Daniel和@zeeMonkeez指出的那样,Loren的博客在这里讨论了这个问题,当在这里创建内存时,她明确回答了函数返回.这些帖子中的一般想法是"除非需要,否则MATLAB不会复制"

基本上,MATLAB从内存管理中抽象出来.


旁注:如果你真的需要利用它,有类似指针的东西.请参阅@ excaza的评论.

  • 事实并非如此.Matlab使用copy-on-write,这意味着`out`永远不会重复. (3认同)