【发布时间】:2011-05-06 07:18:09
【问题描述】:
在下面给出的示例中,我尝试将堆栈大小设置为 1kb。
为什么现在可以在foo() 中分配大小为8kb 的整数数组?
#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);
}
【问题讨论】:
-
谢谢,我现在很想知道为什么这不像 man(2) setrlimit 中所宣传的那样有效。幸运的是,gcc 允许您指定堆栈大小:)
-
一个问题被收藏的次数多于被点赞的次数——此时。很有趣。
标签: c linux stack segmentation-fault setrlimit