紧跟Stackoverflow的新徽标设计的庆祝 Activity ,我很好奇sstk()
在BSD和其他类似UNIX的操作系统中的意义是什么?
根据Linux内核系统调用接口(interface)手册页,sstk(2)
应该:
但是,也要根据手册:
通过查看glibc's sstk.c source可以注意到
我的问题是,为什么要手动更改堆栈的大小? sbrk()和 friend 很有意义,但是在程序中手动重新调整堆栈大小的大小有什么用吗?
最佳答案
使用系统调用显式扩展堆栈的另一个可能的原因是,如果请求太大,您可以得到干净的错误指示,这与处理堆栈分配失败的常规方法相反(即,即使有分配,也不要尝试)失败,只需让进程崩溃即可。
很难确切地知道执行一些递归操作需要多少堆栈空间,但是您可以做出合理的猜测和sstk(guess*10)
来确定。
关于c - sstk()系统调用不存在的用法示例?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32593900/