/* Hello10 function for MATLAB 5.x By Gerox Programmed by Gerox 1999.July 6 for destructor constructor demonstration program */ #include #include "mex.h" static int initialized = 0; static double *sample = NULL; void cLeanup(void) { if(initialized != 0) { // do something mexPrintf("MEX-file is safely terminated.\n"); mxFree(sample); initialized = 0; } } void mexFunction(int nlhs,mxArray *plhs[],int nrhs,const mxArray * prhs[]) { double *pldata; if(nrhs != 0) { mexErrMsgTxt("zero input must be required.");return; } if(nlhs != 1) { mexErrMsgTxt("one output must be required.");return; } if(initialized == 0) { sample = (double*)mxCalloc(1,sizeof(double)); mexMakeMemoryPersistent(sample); mexAtExit(cLeanup); sample[0] = 0; initialized++; } plhs[0] = mxCreateDoubleMatrix(1,2,mxREAL); pldata = mxGetPr(plhs[0]); pldata[0] = (double)initialized++; sample[0] += 1.0; pldata[1] = sample[0]; return; }