Beginner: Mex array size too large?
2 views (last 30 days)
Show older comments
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 Comments
Accepted Answer
James Tursa
on 19 Apr 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);
}
More Answers (0)
See Also
Categories
Find more on Write C Functions Callable from MATLAB (MEX Files) in Help Center and File Exchange
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!