Установить размер стека с помощью setrlimit () и вызвать переполнение стека / segfault

В приведенном ниже примере я пытаюсь установить размер стека в 1 КБ.

Почему теперь возможно разместить массив целых чисел в стеке размером 8kb в foo () ?

#include <stdio.h>
#include <sys/resource.h>

void foo(void);

int main() {
 struct rlimit lim = {1024, 1024};

 if (setrlimit(RLIMIT_STACK, &lim) == -1)
  return 1;

 foo();

 return 0;
}

void foo() {
 unsigned ints[2048];

 printf("foo: %u\n", ints[2047]=42);
}
12
задан tchrist 7 November 2010 в 14:03
поделиться