There are two important memory areas when you're running your program. One area is called the stack and one area is called the heap. The stack saves everything that is required when a function is called and starts running. All variables that are declared inside of your function are saved on the stack. When another function is called and your current function is still running, this other function data and all it's variables are stored on the stack by stacking it on top of the memory of the first function. Because everything is stacked on top of each other it is called the stack memory. When a function is done the memory the function has used on the stack is freed. The idea of the stack is, that only the memory of the function on the top of the stack can be freed. Everything below this memory has to wait. And you can only put new needed memory on top of the stack. This is called the last-in-first-out principle.

When you're running the function with this huge array all the memory that is needed for this array is occupied on the stack. If the stack is full no other memory area on top of the stack is free to store more data. You'll get a stack overflow and the program crashes.

The stack is small. With Acknex you can place about 10 000 functions on top of each other until the stack is full. If you use large arrays this will happen even faster.
You need another memory area to store such huge data. This area is called the heap. Gamestudio can use about 1.5 GB of your system memory for its heap. To save data on the heap you need to use special functions. For arrays use the function called malloc.

Acknex provides a special version of malloc called sys_malloc:

int* nodes;

nodes = sys_malloc(huge * sizeof(int) ); //needs about 470 MB