Error de segmentación al crear una matriz en C

He migrado recientemente a una nueva computadora portátil: HP dv6119tx (Intel Core i5, 4 GB de RAM). Tiene instalado Windows 7 Home Premium 64 bit.

Estoy tratando de crear una matriz de tipoint de longitud 10 ^ 6 en C ++ (Dev C ++), que solía crear cómodamente en mi última computadora portátil (Windows 7 Ultimate / Ubuntu Linux de 32 bits, 2 GB de RAM) y cualquier otro entorno que haya programado (debería tomar alrededor de 3.5 MB de RAM). Pero con la configuración actual, obtengo un error de "Falla de segmentación" en modo de depuración.

SCREENSHOTS (EDITAR):
La primera captura de pantalla muestra 10 ^ 5 trabajando en la configuración actual y 10 ^ 6 no. No tengo una captura de pantalla para 10 ^ 6 trabajando en mi última máquina, pero la he usado muchas veces.

EDITAR
El programa funcionaría bien si declarara la matriz comogloba en su lugar o lo creó dinámicamente en el montón como

int* a = new int[MAX];  

Pero lo que no entiendo es que cuando la matriz local está ocupando apenas 3,5 MB de memoria en la pila (y funcionaba bien en una máquina de 2 GB), ¿por qué debería surgir este problema con una máquina de 4GB? ¿Es este un problema de espacio de pila de usuario? ¿Se puede aumentar manualmente?

EDIT 2:
En particular, hago esta pregunta porque he presentado numerosas soluciones en SPOJ con matrices de 10 ^ 6 creadas en la pila. Con mi configuración actual, me siento paralizado por no poder hacer eso. Prefiero apilar sobre el montón siempre que sea posible porque no tiene problemas de pérdida de memoria; y variables locales sobre variables globales porque están ordenadas y no alteran el espacio de nombres.

Respuestas a la pregunta(3)

Su respuesta a la pregunta