在读完一些东西后,我对C中的静态变量仍然有点模糊:
根据this PDF文件(第1页底部),静态变量保存在我的可执行文件的“初始化数据”段中。
另一方面,我用C语言引用我的书*:
在分配相对较小的运行时堆栈的系统上,一个 可能希望在函数中将大数组声明为
static
个变量main
。然后这些数组不会用尽stack
空格。
从第一个链接开始,它看起来不像是静态变量(甚至是数组)会耗尽堆栈空间。那么交易是什么?
*书是:“C中的问题解决和程序设计”,作者:Jeri R. Hanly& Elliot B. Koffman,第3版
答案 0 :(得分:3)
两个源都说明了相同的事实:静态变量不在堆栈段中。
您引用的来源陈述:静态变量不在堆栈段中。
你的书中说的是:如果你有一个小堆栈,那就让变量变为静态。
但它们仍然在程序的数据段中,而不在代码段中。您的第一个来源引用的初始数据段,如相应的图片所示,在堆栈和堆段之外。