ম্যাটল্যাবে, clear mex
সমস্ত এমএক্স-ফাইলগুলি মেমরি থেকে আনলোড করে (যদি না তারা লক হয়)। ম্যাকোসের পূর্ববর্তী সংস্করণগুলির অধীনে, আমি কোনও clear mex
কমান্ড জারি করে কেবল ম্যাটল্যাব পুনরায় চালু না করেই কোনও এমএক্স-ফাইল পুনরায় সংকলন করতে এবং পরিবর্তিত সংস্করণটি চালাতে সক্ষম হয়েছি । মোজভেভের অধীনে এটি আর সম্ভব নয়।
উদাহরণস্বরূপ, এই তুচ্ছ এমএক্স-ফাইলটি নিন ( get_data_pointer.c
):
#include "mex.h"
void mexFunction( int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[] )
{
plhs[0] = mxCreateNumericMatrix(1, 1, mxUINT64_CLASS, mxREAL);
*(uint64_t*)mxGetData(plhs[0]) = (uint64_t)mxGetData(prhs[0]);
}
আমরা ম্যাক্স-ফাইলটি তৈরি করতে এবং এর সাথে স্মৃতিতে লোড করতে পারি
mex get_data_pointer.c
get_data_pointer(0)
এটি সাফ করার জন্য,
clear mex
[~,mexfiles] = inmem
version -modules
inmem
প্রকৃতপক্ষে কোনও শূন্য সেল অ্যারে প্রদর্শন করে যে কোনও এমএক্স-ফাইল মেমরিতে লোড করা হয় না, তবে version -modules
( এই উত্তর থেকে অনির্ধারিত ) এখনও /Users/cris/matlab/get_data_pointer.mexmaci64
তার আউটপুট দেখায় । এবং মেক্স-ফাইল উত্স কোড পরিবর্তন করে এবং পুনরায় সংকলন প্রমাণ করে যে, এমএক্স-ফাইলটি কখনও পুনরায় লোড করা হয় না, ম্যাটল্যাব থেকে প্রস্থান না হওয়া অবধি পুরানো সংস্করণটি এখনও চলছে।
আমি এটি ম্যাকওএস মোজভেভে MATLAB R2017a এ দেখছি। হাই সিয়েরার অধীনে একই ম্যাটল্যাব সংস্করণে এটি কখনও সমস্যা ছিল না।
পুনরায় আরম্ভ না করে কীভাবে আমি ম্যাটল্যাবকে এমএক্স-ফাইলটি আনলোড করতে বাধ্য করতে পারি?