Asignación de una matriz grande (5000+)

Estoy trabajando en una aplicación donde hay tres tamaños posibles para los datos ingresados:

small: 1000 elementos medio = 5000 elementos grande = 500,000 elementos

El problema es que no puedo asignar la gran matriz. Parece que no se acepta un tamaño superior a 5000.

Recibo un error de tiempo de ejecución cuando hago lo siguiente:

long  size=1000;
char ch;
int arr[size];
ch=getch();

if(ch==..)
  size=...;

Los tamaños de 1000 y 5000 parecen funcionar bien, pero ¿cómo puedo hacer una matriz de tamaño 500k de esta manera?

Respuestas a la pregunta(3)

Su respuesta a la pregunta