进程内存布局
image.png
我们写程序运行栈的栈帧保存在栈区,函数调用深度太多将导致爆栈
栈的大小有上限,每个进程可以指定软上限,操作系统可指定硬上限
linux查看栈上限方法
linux可以通过ulimit命令查看栈上限和设置上限
ulimit -a 查看进程所有资源上限
ulimit -s xx 修改栈上限
也可以通过程序中调用函数修改
每个进程都有一组资源限制,其中一些可以用getrlimit和setrlimit函 数查询和更改。
#include
int getrlimit(int resource, struct rlimit *rlptr);
int setrlimit(int resource, const struct rlimit *rlptr);
两个函数返回值:若成功,返回0;若出错,返回非0
这两个函数在Single UNIX Specification的XSI扩展中定义。进程 的资源限制通常是在系统初始化时由0进程建立的,然后由后续进程继 承。每种实现都可以用自己的方法对资源限制做出调整。
对这两个函数的每一次调用都指定一个资源以及一个指向下列结构 的指针。
struct rlimit {
rlim_t rlim_cur; /* soft limit: current limit */
rlim_t rlim_max; /* hard limit: maximum value for rlim_cur */ };
在更改资源限制