FAQ 11: Why do I keep getting "stack overflow" errors when I use a MEX file?

FMEX Home        FAQs          How Can I Help?           Examples         Tools & Links

Memory is divided into two types: stack and heap. Memory can be allocated and deallocated from the help while a program is running. On Windows, the stack size is fixed, and each time that a variable is declared with fixed dimensions in your Fortran MEX program, it takes some of the stack memory. While this might not be a problem when you pass your MEX file a 1000 element array, when you pass it 1,000,000 elements, it will likely complain.

The trick is to move variable off the stack and onto the heap. The surest way of doing this is by using ALLOCATABLE or POINTER gateways (examples 2 and 3 in FAQ 4). Both of these features require an F9x compiler. If you are restricted to F77, then put the large variables in a COMMON block, which should also force them onto the heap.

This page was last updated on 28 August 2006 11:25 .