Я установил размер стека на 2000 КБ с помощью ulimit -s 2000 и ulimit -Ss 2000 для жесткого ограничения. И в приведенной ниже программе я выделил около 2040000 (510000 x 4) байтов, что меньше, чем я ограничен, т.е. 2048000(2000*4) байт, но я вижу, что моя программа вылетает! Кто-нибудь может подсказать, почему это происходит.
#include <stdio.h>
#include <malloc.h>
int main()
{
int a[510000] = {0};
a[510000] = 1;
printf("%d", a[510000]);
fflush(stdout);
sleep(70);
}
РЕДАКТИРОВАТЬ 1: сбой не из-за того, что индекс массива выходит за пределы, поскольку я пробовал более низкий индекс и все еще падает. Это происходит только тогда, когда я ограничиваю ulimit.
#include <malloc.h>
? - person Sourav Ghosh   schedule 07.07.2015a[510000] = 1; printf("%d", a[510000]);
.........Ой! - person haccks   schedule 07.07.2015