有时需要将函数锁定在内存中,可使用 mlock 函数实现。这通常用于包含某些初始化代码的动态链接函数(oct-文件或 mex-文件),以防止调用 clear 时移除这些初始化内容。
例如:
function my_function () mlock (); ... endfunction
上述代码阻止了 my_function 在被调用后从内存中移除,即使调用了 clear 也是如此。可以使用 mislocked 判断函数是否已锁定在内存中,并使用 munlock 解锁函数,如下列代码所示:
my_function ();
mislocked ("my_function")
⇒ ans = 1
munlock ("my_function");
mislocked ("my_function")
⇒ ans = 0
mlock 的一个常见用途是防止持久变量从内存中被移除,如下例所示:
function count_calls ()
mlock ();
persistent calls = 0;
printf ("count_calls() has been called %d times\n", ++calls);
endfunction
count_calls ();
-| count_calls() has been called 1 times
clear count_calls
count_calls ();
-| count_calls() has been called 2 times
mlock 还可用于防止在外部编辑器中对 m 文件的修改影响当前 Octave 会话;ignore_function_time_stamp 函数可实现类似的效果。
() ¶将当前函数锁定到内存中,使其无法通过 clear 移除。
另请参阅: munlock, mislocked, persistent, clear.
() ¶(fcn) ¶解锁指定的函数 fcn,使其可以通过 clear 从内存中移除。
如果未指定函数名,则解锁当前函数。
另请参阅: mlock, mislocked, persistent, clear.
版权所有 © 2024-2026 Octave中文网
ICP备案/许可证号:黑ICP备2024030411号-4