1

来自 Scott 的 Programming Language Pragmatics

对象生命周期通常对应于三种主要存储分配机制之一,用于管理对象的空间:

  1. 静态对象被赋予一个绝对地址,该地址在程序执行过程中被保留。

  2. 堆栈对象以后进先出的顺序分配和释放,通常与子程序调用和返回结合使用。

  3. 堆对象可以在任意时间分配和释放。它们需要更通用(也更昂贵)的存储管理算法。

例如,在 C 中,静态对象必须用常量表达式(可以在编译时计算的表达式)初始化。

我不确定其他语言是否是这种情况,甚至其他语言也有静态对象。

一般来说,必须初始化静态对象吗?初始化时,是否必须使用可以在编译时评估的表达式进行初始化?

通过初始化,我的意思是显式或隐式(即由语言实现自动完成),而不是取消初始化。所以改写我的问题:一般来说,静态对象可以不被程序或编译器初始化吗?

谢谢。

4

1 回答 1

3

除非您明确初始化变量,否则变量将static自动初始化为“零”。

除了生命周期或链接部分之外,它与任何其他变量没有什么不同,这意味着您可以像初始化任何其他变量一样初始化它。

于 2017-09-15T22:55:52.000 回答