linux如何计算当前系统进程栈的大小

如何确认进程栈的大小:
我们要知道栈的大小,那必须得知道栈的起始地址和结束地址。栈起始地址 获取很简单,只需要嵌入汇编指令获取栈指针 esp 地址即可。栈结束地址 的获取有点麻烦,我们需要先利用递归函数把栈搞溢出了,然后再 GDB 中把栈溢出的时候把栈指针 esp 打印出来即可。代码如下:

/* file name: stacksize.c */
 
void *orig_stack_pointer;
 
void blow_stack() {
    blow_stack();
}
 
int main() {
    __asm__("movl %esp, orig_stack_pointer");
 
    blow_stack();
    return 0;
}

通过如何截图可以看出协议栈的大小为 8M
在这里插入图片描述

在这里插入图片描述

发布了77 篇原创文章 · 获赞 6 · 访问量 9329

猜你喜欢

转载自blog.csdn.net/ding283595861/article/details/104607943