Memory leak with Mex
Ältere Kommentare anzeigen
I am doing below in a loop with dims = [1024 768 256]
1. I want to read a set of block loaded by block_iter(1 to 16) into a RAM of Hardware. The memory call seems to display the memory leaking. Am I doing it wrong somewhere?
// Create memory for reading in data
mxArray *B= mxCreateNumericArray(3,dims,mxUINT8_CLASS,mxREAL);
mxArray *in = mxCreateDoubleMatrix(1, 1, mxREAL);
// See Memory usage
mexCallMATLAB(0,NULL,0,NULL,"memory");
memcpy(mxGetPr(in), &block_iter, sizeof(double)*1*1);
// Read a block of 256 images of 1024*768. Even the temp variable is cleared in the dmd_feeder function
mexCallMATLAB(1,&B,1,&in,"data_feeder");
//Call RAM_FILL
ram_fill(d,B); // As of now does nothing, its an empty void function and I would be replacing it to copy data to ram of hardware.
//Deallocate memory;
mxDestroyArray(B);
mxDestroyArray(in);
PS: The memory leak is around 192 MB each loop which is exactly the amount of data in array B
1 Kommentar
Jan
am 11 Mär. 2013
What is "a loop with dims"? What is "block_iter(1 to 16)"? What does "memory exactly reply"? Do you mean the size of the largest available block or the sum of the free memory? What happens inside "data_feeder"? What is "d" in the call of ram_fill() and are you really sure, that this function does not matter? If so, why do you include it in the example?
Akzeptierte Antwort
Weitere Antworten (0)
Kategorien
Mehr zu Write C Functions Callable from MATLAB (MEX Files) finden Sie in Hilfe-Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!