جلوگیری از پاک (Clear) شدن توابع (Function) از حافظه (Memory) (جلوگیری از عملکرد دستور clear برای آنها)، با دستور mlock ، در متلب (MATLAB)
هنگامی که از یک تابع (Function) در کدهای برنامه متلب (MATLAB) خود استفاده می کنیم، آن تابع (Function) در حافظه (Memory) قرار می گیرد و زمانی که از دستور clear استفاده شود، از حافظه (Memory) پاک خواهد شد. اما گاهی ما قصد داریم که در صورت استفاده از یک تابع (Function)، حتی اگر دستور clear اجرا شود، تابع مورد نظر از حافظه (Memory) پاک نگردد. در این موارد، می توانیم از دستور mlock در متلب (MATLAB) استفاده نماییم.
به این صورت که دستور mlock ، در خط دوم از کدهای تعریف تابع (Function)، ذکر می گردد.
به عنوان مثال، فرض کنید که تابعی با نام add و با ساخت یک m-file جدید با نام add.m تعریف نموده ایم که کدهای تعریف آن به صورت زیر می باشد :
z = x+y;
اکنون در صورتی که بخواهیم دستور mlock را در آن ذکر نماییم، کدهای تعریف تابع (Function) را به صورت زیر می نویسیم :
mlock
z = x+y;
حال چک می کنیم که آیا با اجرای دستور clear ، تابع add از حافظه (Memory) پاک می شود یا خیر. برای این منظور، کد متلب (MATLAB) زیر را اجرا می کنیم :
close all
clc
A = add(1,2)
clear all
M = inmem
3 خط اول کدها برای عدم تداخل برنامه فعلی با برنامه های قبلی اجرا شده در متلب (MATLAB) می باشد.
دستور clear all را بعد از استفاده از تابع add به کار برده ایم، زیرا وقتی از تابع add استفاده می شود، آنگاه در حافظه (Memory) قرار می گیرد و بنابراین بعد از آن باید دستور clear all برای پاک کردن از حافظه (Memory) اجرا گردد.
در کد بالا، دستور inmem برای به دست آوردن نام تمام توابع (Function) و MEX-file ها و کلاس های (Class) موجود در حافظه (Memory) به کار رفته است .
نتیجه :
3
M =
‘kelidestan’
‘RmiMlData.RmiMlData’
‘RMIRepository.RMIRepository’
‘add’
‘workspacefunc’
همان طور که مشاهده می کنید، تابع add از حافظه (Memory) پاک نشده است.