来自编程语言语用学,由Scott
对象生命周期通常对应于三个主体之一 存储分配机制,用于管理对象的空间:
静态对象被赋予一个绝对地址,该地址在整个程序的执行过程中保留。
堆栈对象以后进先出顺序分配和释放,通常与子程序调用和返回一起使用。
- 可以在任意时间分配和释放堆对象。它们需要更通用(且昂贵)的存储管理 算法
醇>
例如,在C中,必须使用常量表达式(可在编译时计算的表达式)初始化静态对象。
我不确定其他语言是否是这种情况,甚至其他语言也有静态对象。
通常,必须初始化静态对象吗?初始化时,是否必须使用可在编译时计算的表达式对它们进行初始化?
通过初始化,我指的是显式或隐式(即通过语言实现自动完成),而不是uninitailziation。 所以重新解释一下我的问题:通常情况下,静态对象是否可以被程序或编译器保持未初始化状态?
感谢。
答案 0 :(得分:3)
static
变量将自动初始化为“零”,除非您明确初始化它。
除了那个和生命周期或链接部分之外,它与任何其他变量没有什么不同,这意味着你可以像初始化任何其他变量一样初始化它。