Clear Filters
Clear Filters

Beginner: Mex array size too large?

3 views (last 30 days)
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

Accepted Answer

James Tursa
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);
}
  1 Comment
mick strife
mick strife on 20 Apr 2013
Thank you so much for your effort. Even the background notes were helpful. have a nice weekend! :-)

Sign in to comment.

More Answers (0)

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!