Main Content

mlock

関数やスクリプトがメモリからクリアされるのを防止

構文

説明

mlock はメモリ内で現在実行中の関数をロックします。関数をロックすると、clear によるメモリからの削除ができなくなり、またファイル内で定義されているどの persistent 変数も再初期化できなくなります。

mlock は MATLAB® コード ファイル内でのみ使用します。

ロックされている関数またはスクリプトをメモリから削除するには、まず munlock コマンドを使用してロックを解除し、その後に clear コマンドを使用します。

すべて折りたたむ

現在の作業フォルダー内に関数 myFun を作成します。

function myFun()
    persistent n
    if isempty(n)
        n = 0;
    end
    n = n+1
end

コマンド プロンプトで myFun を 2 回呼び出します。npersistent なので、この関数を呼び出すたびに値が増加します。

myFun
myFun
myFun
n =

     1


n =

     2


n =

     3

この関数をクリアして、さらに 2 回呼び出します。関数をクリアすると永続変数もクリアされます。

clear myFun
myFun
myFun
n =

     1


n =

     2

関数 myFun を編集して、mlock の呼び出しを含めます。

function myFun()
    mlock
    persistent n
    if isempty(n)
        n = 0;
    end
    n = n+1
end

コマンド プロンプトで myFun を 3 回呼び出します。

myFun
myFun
myFun
n =

     1


n =

     2


n =

     3

この関数をクリアしてさらに 2 回呼び出すよう試みます。myFun はロックされているため、関数をクリアしてもメモリから削除されず、永続変数もクリアされません。

clear myFun
myFun
myFun
n =

     4


n =

     5

myFun のロックを解除して、メモリからクリアできるようにします。

munlock('myFun')

ヒント

  • MEX ファイルをロックするには、関数 mexLock を使用します。

拡張機能

バージョン履歴

R2006a より前に導入