C中的静态变量(在main中声明)。混合

时间:2014-10-02 08:30:37

标签: c arrays static stack

在读完一些东西后,我对C中的静态变量仍然有点模糊:

根据this PDF文件(第1页底部),静态变量保存在我的可执行文件的“初始化数据”段中。

另一方面,我用C语言引用我的书*:

  

在分配相对较小的运行时堆栈的系统上,一个   可能希望在函数中将大数组声明为static个变量   main。然后这些数组不会用尽stack空格。

从第一个链接开始,它看起来不像是静态变量(甚至是数组)会耗尽堆栈空间。那么交易是什么?

*书是:“C中的问题解决和程序设计”,作者:Jeri R. Hanly& Elliot B. Koffman,第3版

1 个答案:

答案 0 :(得分:3)

两个源都说明了相同的事实:静态变量不在堆栈段中。

您引用的来源陈述:静态变量不在堆栈段中。

你的书中说的是:如果你有一个小堆栈,那就让变量变为静态。

但它们仍然在程序的数据段中,而不在代码段中。您的第一个来源引用的初始数据段,如相应的图片所示,在堆栈和堆段之外。