Каков максимальный размер статического массива и динамический массив? Я думаю, что нет ограничений для динамического массива, но почему статические массивы имеют ограниченный размер?
Необработанное исключение в 0x011164A7 в StackOverflow.exe: 0xC00000FD: переполнение стека (параметры: 0x00000000, 0x00482000)
Это больше похоже на ошибку времени выполнения. Точнее - переполнение стека.
В большинстве случаев размер массива ограничен только доступной памятью. Тем не менее, ограничение на объекты, выделенные стеком, обычно намного более суровое. По умолчанию это 1Mb для Windows и 8Mb для Linux. Похоже, что ваш массив и другие данные уже в стеке занимают больше места, чем предел.
Существует несколько способов избежать этой ошибки:
static
или объявите его на верхнем уровне вашего модуля. Таким образом, он будет выделен в сегменте .bss
вместо стека.malloc
/new
чтобы явно выделить этот массив в куче.std::vector
а не массивы.ulimit -s unlimited
Максимальный размер массива определяется объемом памяти, доступ к которой может получить программа. В 32-разрядной системе максимальный объем памяти, который может быть адресован указателем, составляет 2 ^ 32 байта, что составляет 4 гигабайта. Фактический предел может быть меньше, в зависимости от деталей реализации операционной системы.
Обратите внимание, что это не имеет никакого отношения к объему физической памяти, доступной вам. Даже на машине с объемом памяти менее 1 ГБ вы можете выделить 2-гигабайтный массив... он просто будет медленным, так как большая часть массива будет в виртуальной памяти, заменена на диск.
int Data[8][499][15];
не работает на моем компьютере