Если вы используете 32-разрядное приложение, то по умолчанию у вас есть только 2 ГБ адресного пространства пользователя. 400 миллионов целых чисел - это около 1,5 ГБ. Скорее всего, у вас не будет такого непрерывного адресного пространства. Можно заставить 32-битные окна выделять 3 ГБ адресного пространства пользователя для каждого процесса, но это может быть просто пробелом для вашей ситуации.
Если вы можете перейти на 64-битную архитектуру, то это не должно быть проблемой; в противном случае вы должны найти способ хранения ваших матричных данных таким образом, чтобы не требовалось ни одного блока непрерывного хранения, например, для хранения их в виде фрагментов.