C:堆栈太大会导致分段错误吗?

问题描述 投票:0回答:1

我最近调试了一个非常奇怪的问题,该问题导致了分段错误。

[基本上,在我将几个声明为局部变量的非常大的数组移到全局后,问题消失了,这意味着据我所知,我将它们从堆栈移到了堆空间。没有其他改变。分段错误本身以非常老而稳定的代码出现,并且在没有遇到任何分段错误的其他程序之间也共享了该代码。

这些阵列的总大小约为1.5 MB。

太大的堆栈是否可能通过覆盖/弄乱函数指针而导致分段错误?

我的感觉是编译器应该抓住这种情况,但是我绝对没有其他方法可以解释这种行为。

c memory-management
1个回答
0
投票

程序的堆栈大小往往会受到限制,因此,声明过多的大型数组作为局部变量会导致堆栈溢出。您所做的是处理此问题的好方法。

这不是编译器通常检查的东西,因为堆栈大小是由操作系统在运行时控制的。

© www.soinside.com 2019 - 2024. All rights reserved.