Beginner: Mex array size too large?
3 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Hello my friends,
i m a beginner with mex, so may be someone could help me please. i want to define a large array in my mex-code but at some point matlab crashes. Does somebody have an idea why or have a proposal for a solution? Many thanks! :)
Heres the code:
void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[])
{
float myArray[106*3*7555]; // doesnt work but works with a smaller definition
0 comentarios
Respuesta aceptada
James Tursa
el 19 de Abr. de 2013
Your myArray is a local variable, meaning that the memory for it is obtained from the stack. The stack for your program is typically limited in size to a much smaller amount than the heap. To get your variable allocated from the heap instead of the stack you can allocate it with one of the memory allocation functions, e.g.:
void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[])
{
float *myArray;
myArray = mxMalloc(106*3*7555*sizeof(*myArray));
// insert code to use myArray
mxFree(myArray);
}
Más respuestas (0)
Ver también
Categorías
Más información sobre Write C Functions Callable from MATLAB (MEX Files) en Help Center y File Exchange.
Productos
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!