Вы объявляете это как локальную переменную в функции или методе? Если это так, это классический переполнение стека. Для VS2010 см. http://msdn.microsoft.com/en-us/library/8cxs58a6%28v=vs.100%29.aspx
Запасное значение определяет общее распределение стека в виртуальной памяти. Для компьютеров x86 и x64 размер стека по умолчанию составляет 1 МБ. На чипсете Itanium размер по умолчанию составляет 4 МБ.
Таким образом, массив чисел с плавающей запятой 1024x1024 (с учетом 4 байтов на каждый поплавок) в колоссальном 4mb - вы проплыли прямо через предел стека по умолчанию.
Обратите внимание, что даже если у вас действительно есть Itanium, вы не собираетесь быть в состоянии использования все это 4mb - параметры, например, также должны быть сохранены в стеке см http://www.csee.umbc.edu/~chang/cs313.s02/stack.shtml
Теперь у вас может просто увеличить размер стека, но в какой-то день вам понадобится использовать большой массив, так что это война с истощением, которую вы не выиграете. Это проблема, которую лучше всего решить, если она уйдет; Другими словами, вместо:
float stuff[1024 * 1024];
Вы объявим его как:
float *stuff = new float[1024 * 1024];
// do something interesting and useful with stuff
delete[] stuff;
Вместо того, чтобы быть в стеке это теперь будет выделено в куче. Обратите внимание, что это не та же куча, что упоминается Робертом Харви в его ответе; у вас нет ограничений в опции/HEAP.
Если вы не можете устранить проблему, сидя перед реальным кодом, при всей вашей рабочей среде в вашем распоряжении, какая надежда у нас получается, без инструментов и без видимости? Это * проблема с памятью; вы должны будете немного отладить и выяснить, почему. –
Попробуйте сделать 1024 отдельных размера поплавкового массива размером 1024, если ваш 2D-массив не должен быть смежным. –