A = A + B会分配新内存吗?

The*_*guy 2 matlab memory-management

写作时

A = A + B;
Run Code Online (Sandbox Code Playgroud)

A和B beeing矩阵,MATLAB将执行"就地"即改变A中的元素,还是分配新的内存来存储结果?如果是这样,我该如何避免呢?

我想知道的原因是,例如,如果一个人写道

A = A + B + A^2;
Run Code Online (Sandbox Code Playgroud)

原始数据需要多次访问,因此不能简单地被第一次添加覆盖.

谢谢.

Oli*_*Oli 5

我使用系统监视器在计算机上测试了它.我观察到A=A+B它没有分配新的内存,但A=A+B+A^2确实分配了新的内存.

这是有道理的,因为在C++中,很容易编写没有内存分配的第一个代码,但第二个代码是不可能的.