我正在玩一个以鸡计划风格进行内存分配的翻译。基本思路是:
int main() {
instruction instructions[] = { zero_root, print_root, hello_world,
hello_world, stop };
top_ip.go = &instructions[0];
setjmp(top);
(*top_ip.go)(top_ip);
return 0;
}
89,10-17 Bot
和
/* The following function is machine dependent */
static bool is_time_to_gc(){
/* Is allocated on the stack */
char stack_top;
/* It's address is therefore the stack's top */
return &stack_top >= STACK_LIMIT;
}
static void goto_next_instruction(struct instruction_pointer ip) {
++ip.go;
if (is_time_to_gc()) {
/*
* Some complicated garbage collection stuff which I haven't
* completed yet.
*/
top_ip.go = ip.go;
longjmp(top, 0);
}
(*ip.go)(ip);
}
并且示例说明是:
static void hello_world(struct instruction_pointer ip) {
printf("Hello World!\n");
goto_next_instruction(ip);
}
我需要知道的是STACK_LIMIT的值应该是什么(我还需要知道堆栈是否向上或向下扩展。)如何获得有关堆栈限制的特定于平台的信息?
答案 0 :(得分:1)
man getrlimit
。
通常在/etc/login.conf中检查shell强加的限制
(如果它是sh衍生物,您可以通过键入limit
)来查看它们。
:) 欢呼声。