一定要初始化静态对象吗?
问题描述:
从编程语言语用,由Scott一定要初始化静态对象吗?
对象的寿命通常对应于三个主要 存储分配机制之一,用于管理对象的空间:
静态对象给出的绝对地址这在整个程序的执行过程中保留下来。
栈对象分配和释放在最后的,第一个出的顺序,通常与子程序调用和返回结合。
- 堆对象可以分配,并在任意时间释放。他们需要更通用(并且昂贵)的存储管理算法 算法。
例如,在C,静态对象必须用常量表达式(表达式可在编译时被评估)初始化。
我不知道它是否在其他语言的情况下,甚至什么其他语言也有静态的对象。
一般来说,必须初始化静态对象吗?初始化时,它们是否必须使用可在编译时评估的表达式进行初始化?
通过初始化,我的意思是显式或隐式的(即自动语言实现完成),而不是uninitailziation。 所以要重新说明我的问题:通常,程序或编译器可以将静态对象保持为未初始化状态?
谢谢。
简短答案是'不'。但是他们可能应该在程序的后面避免未初始化的问题。 – Serge
不完全正确,一个'static'变量默认被初始化为0(或者等价),'non static'变量应该被初始化,否则会在你的内存栈中产生一些垃圾值。 –