Alocação de uma matriz grande (mais de 5000)

Estou trabalhando em um aplicativo onde havia três tamanhos possíveis para os dados inseridos:

small: 1000 elementos médio = 5000 elementos grande = 500.000 elementos

O problema é que não consigo alocar a grande variedade. Parece que um tamanho maior que 5000 não é aceito.

Recebo um erro em tempo de execução quando faço o seguinte:

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

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

s tamanhos de 1000 e 5000 parecem funcionar bem, mas como posso fazer uma matriz de tamanho 500k dessa maneir

questionAnswers(3)

yourAnswerToTheQuestion