例如,当我们调用递归函数时,连续的调用将存储在堆栈中。但是,如果无限继续下去,则会出现错误,该错误是“分段错误”(如 GCC 上所示)。
难道不应该是“堆栈溢出”吗?那么两者之间的基本区别是什么呢?
顺便说一句,解释比维基百科链接更有帮助(已经浏览过,但没有回答特定的查询)。
堆栈溢出是原因,分段错误是结果。
至少在x86和ARM上,“堆栈”是为放置局部变量和函数调用的返回地址而保留的一块内存。当堆栈耗尽时,将访问保留区域之外的内存。但应用程序没有向内核请求该内存,因此会生成 SegFault 以进行内存保护。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)