Dato il seguente codiceMATLAB "sposta" o "copia il valore restituito?
function [out] = doit()
out = [1,2,3,4,5,6];
end
tmp = doit();
Sarà MATLAB copiare la memoria di out
-tmp
o spostarlo direttamente a tmp
?
Dato il seguente codiceMATLAB "sposta" o "copia il valore restituito?
function [out] = doit()
out = [1,2,3,4,5,6];
end
tmp = doit();
Sarà MATLAB copiare la memoria di out
-tmp
o spostarlo direttamente a tmp
?
Non c'è niente come il puntatore in MATLAB, ci sono local workspaces.
Sembra che MATLAB sia intelligente e copia e restituisce quando necessario e passa "puntatore" (senza che tu lo sappia) se non è necessario. Come sottolineato da @Daniel e @zeeMonkeez, questo è discusso nel blog di Loren here e risponde esplicitamente ai ritorni delle funzioni quando la memoria è stata creata all'interno di here. L'idea generale in questi post è "MATLAB non copierà se non è necessario"
Fondamentalmente MATLAB ti astrae dalla gestione della memoria.
Nota a margine: C'è qualcosa come puntatori se si ha realmente bisogno per sfruttare questa. Vedi il commento di @ excaza.
[Puoi avere puntatori (ish) in MATLAB] (http://www.matlabtips.com/how-to-point-at-in-matlab/) :) – excaza
@excaza bene, sì tecnicamente vero, tu può fare alcune cose strane con esso! Ma questo non è il caso generale. –
Non è vero. Matlab usa copy-on-write, il che significa che "out" non sarà mai duplicato. – Daniel