matlab子函数执行完成后是怎么释放内存的
发布网友
发布时间:2022-05-01 14:48
我来回答
共1个回答
热心网友
时间:2023-10-19 22:51
A,B会共享工作空间,所以如果反复调用同一个变量,那么就把这个变量在A中建立,则在B中可以直接使用,例如这里的s和i:
function s = A(n)
s = zeros(n,1);
for i = 1:n
B
end
function B
s(i) = i;
end
end
另外,不建议使用变长数组,应该在最初就为变量声明正好或足够的空间,例如这里的s = zeros(n,1),并且在后续过程中不改变s的大小
另外你对内存碎片的想法只是你对matlab内存管理的一个猜想,可能是正确的,但也可能不是,matlab自己有很多优化机制避免糟糕的内存利用,即使你不采用共享内存空间的手段,matlab也未必就会每次为B创建新的空间,而造成内存碎片;而更有可能会自动采用更合理的方式处理
热心网友
时间:2023-10-19 22:51
A,B会共享工作空间,所以如果反复调用同一个变量,那么就把这个变量在A中建立,则在B中可以直接使用,例如这里的s和i:
function s = A(n)
s = zeros(n,1);
for i = 1:n
B
end
function B
s(i) = i;
end
end
另外,不建议使用变长数组,应该在最初就为变量声明正好或足够的空间,例如这里的s = zeros(n,1),并且在后续过程中不改变s的大小
另外你对内存碎片的想法只是你对matlab内存管理的一个猜想,可能是正确的,但也可能不是,matlab自己有很多优化机制避免糟糕的内存利用,即使你不采用共享内存空间的手段,matlab也未必就会每次为B创建新的空间,而造成内存碎片;而更有可能会自动采用更合理的方式处理
热心网友
时间:2023-10-19 22:51
A,B会共享工作空间,所以如果反复调用同一个变量,那么就把这个变量在A中建立,则在B中可以直接使用,例如这里的s和i:
function s = A(n)
s = zeros(n,1);
for i = 1:n
B
end
function B
s(i) = i;
end
end
另外,不建议使用变长数组,应该在最初就为变量声明正好或足够的空间,例如这里的s = zeros(n,1),并且在后续过程中不改变s的大小
另外你对内存碎片的想法只是你对matlab内存管理的一个猜想,可能是正确的,但也可能不是,matlab自己有很多优化机制避免糟糕的内存利用,即使你不采用共享内存空间的手段,matlab也未必就会每次为B创建新的空间,而造成内存碎片;而更有可能会自动采用更合理的方式处理