Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
什么是Linux堆栈?_Linux_Linux Kernel - Fatal编程技术网

什么是Linux堆栈?

什么是Linux堆栈?,linux,linux-kernel,Linux,Linux Kernel,我最近遇到了一个关于“linux堆栈”和“linux堆栈大小”的bug。我偶然发现一个博客,指导我去尝试 ulimit -a 查看我的框的限制是多少,它被设置为8192kb,这似乎是默认值 什么是“linux堆栈”?它是如何工作的,它存储了什么,它做了什么?简单的回答是: 当linux机箱上的程序运行时,它们会随着程序的运行定期从中添加和删除数据。堆栈大小是指在内存中为堆栈分配了多少空间。如果增加堆栈大小,则允许程序增加可调用的例程数。每次调用函数时,都可以将数据添加到堆栈中(堆叠在最后一个例

我最近遇到了一个关于“linux堆栈”和“linux堆栈大小”的bug。我偶然发现一个博客,指导我去尝试

ulimit -a
查看我的框的限制是多少,它被设置为
8192kb
,这似乎是默认值

什么是“linux堆栈”?它是如何工作的,它存储了什么,它做了什么?

简单的回答是:

当linux机箱上的程序运行时,它们会随着程序的运行定期从中添加和删除数据。堆栈大小是指在内存中为堆栈分配了多少空间。如果增加堆栈大小,则允许程序增加可调用的例程数。每次调用函数时,都可以将数据添加到堆栈中(堆叠在最后一个例程数据的顶部)

除非程序非常复杂,或者是为特殊目的而设计的,否则8192kb的堆栈大小通常是合适的。一些程序,如图形处理程序,需要增加堆栈的大小才能正常工作。因为它们可能会在堆栈上存储大量数据

可以随意增加这些应用程序的堆栈大小,这不是问题。为此,请使用


ulimit-s字节


顺便说一句,

堆栈溢出可能会出现太深(或无限)的递归。或者在C代码中滥用
alloca
(或等效的,如可变长度数组)。相关:|非常感谢您的回答。我在Ruby应用程序中遇到了一个
SystemStackError:stack level太深的
错误,我想在继续调查之前更好地了解基本原理。