Судя по Вашему описанию проблемы, Вы работаете в 16-битной среде. В этом случае Вам мало разместить массив, надо ещё правильно с ним работать. Смотрите в сторону huge и системных механизмов управления памятью.
Возможен вариант: Вы неправильно вычисляете размер массива, сохраняя его в двухбайтной переменной вместо 4хбайтной.
Я советую напечатать sizeof(size_t). Если напечатается 2 — у Вас нет пути, кроме как исследовать своё специфическое, нестандартное окружение.