生存期

“生存期”是过程中变量或函数存在程序执行。 该标识符存储的持续时间确定其生存期。

标识符声明具有这种 存储类说明符静态 具有静态存储持续时间。 与静态存储持续时间的标识符 (也称为 “全局”) 具有存储和已定义的值程序的持续时间。 存储是保留的,并且标识符的值与存储的值在程序启动前一次只初始化,。 标识符声明与外部或内部联接还具有静态存储持续时间 (请参见 连接)。

,如果声明它在函数内,标识符声明为,而无需 静态 存储类说明符具有自动存储持续时间。 具有自动存储持续时间 (“本地标识符”) 的标识符具有存储和已定义的值仅在标识符中定义或声明的块中。 一个自动标识符是分配的新存储,每次程序进入块,因此,它丢失其存储 (及其值),在程序退出块时。 在函数声明的标识符没有连接还具有自动存储持续时间。

以下规则指定标识符是否具有全局静态 () 或本地 (自动) 生存期:

  • 所有函数具有静态生存期。 因此它们在程序执行期间始终存在。 标识符声明一个外部级别 (即外部都在程序块在函数定义的同一级别) 始终具有全局静态 () 生存期。

  • 如果本地变量的初始值设定项,变量被初始化,每次创建 (除非它被声明为 静态)。 函数参数还具有局部生存期。 您可以在块内的标识符指定全局生存期通过包括 静态 存储类说明符在其声明。 一个声明的 静态,该变量保留其从块中的项的值设置为下。

虽然使用全局生存期中的标识符出现在源程序中的执行 (例如,外部声明的变量或声明局部变量与 静态 关键字),就可能无法显示在程序的所有部分。 有关可见性的信息,请参见 范围和可见性 ,并为非终止符号有关这种类型 的存储类说明符的 讨论参见 存储类

内存可能指定为需要动态 (),如果使用创建主库实例例如 malloc。 因为动态内存分配使用库 (dll) 例程,不被视为一部分的语言。 在 运行库参考 malloc 函数。

请参见

概念

生存期、大小、可见性和连接