`

static变量生存周期

 
阅读更多


标准规定static变量保证在第一次使用前初始化,但是并不保证一定会在程序开始运行前初始化。
对于简单类型,一般是放在bss段里,程序载入的时候已经被设定好了初值,但是对于对象来说,并没有规定对象的构造函数一定要在某个时刻调用,只是保证在第一次使用前会被调用。
考虑一个极端情况,假设系统上有一个动态库,其中实现了一个类,并且定义了该类的一个static/global实例,如果这个OS做得够聪明,很可能在程序没有使用这个动态库前根本就不载入它,此时这个static对象根本就不存在,直到程序使用了这个动态库,OS将其载入,并通过特定的手段对这个动态库进行初始化(比如Win32中的DllEntryPoint),直到这个初始化过程结束后,该对象才被真正的建立。

 

分享到:
评论

相关推荐

    C语言中static变量使用方法

    ### C语言中static变量使用方法详解 在C语言编程中,`static`关键字扮演着一个非常重要的角色,尤其是在处理变量的存储方式、作用域以及生命周期方面。本文将深入探讨C语言中`static`变量的使用方法,包括静态局部...

    变量的存储类型、外部变量、static内部变量讲解

    - **外部静态变量**(全局变量前加上`static`):作用域限于声明它的源文件内,生命周期同样贯穿整个程序运行过程。 - **特点**: - 内部静态变量在每次函数调用时保留上次的值。 - 外部静态变量只在定义它的...

    vb应用程序举例——变量的生命周期

    - **静态变量(Static Variables)**:使用`Static`关键字声明的局部变量,即使过程执行结束,其值也会保留,下一次再调用该过程时,它仍保持上一次的值。 - **持久变量(Persistent Variables)**:如模块级变量...

    一个简易实现ASP.NET网页静态数据Static Data 进行缓存Cache 的程序例子

    绝对过期会在特定时间后移除缓存项,滑动过期则是在最近访问后的一段时间内有效,而依赖性过期则可以根据其他资源(如数据库表)的状态来决定缓存的生命周期。 在"LookUpDataCacheExample"示例中,我们可以预见到...

    全局变量、局部变量、静态全局变量、静态局部变量的区别

    在编程领域,变量的作用域和生存周期是理解程序行为的关键因素。全局变量、局部变量、静态全局变量、静态局部变量这四种变量类型,各自拥有不同的作用域和生命周期,它们之间的区别对于编写高效、可维护的代码至关...

    C#中静态变量的使用

    2. 生命周期:静态变量生存周期为应用程序的存在周期,而非静态变量的生存周期取决于实例化的类的存在周期。 3. 调用方式:静态变量只能通过“类.静态变量名”调用,类的实例不能调用;非静态变量当该变量所在的类被...

    局部变量 全局变量和存储分类 局部变量作用域和生存期PPT学习教案.pptx

    如果在函数内部定义,`static`变量的作用域仍限于该函数,但其生命周期会持续到程序结束。而在函数外部定义的`static`变量则是全局的,但仅在定义它的文件内可见。`extern`用于声明全局变量或在其他文件中定义的`...

    C/C++中static作用

    `static`关键字在C/C++中提供了强大的功能,从控制变量和函数的作用域,到管理数据的生存周期,再到面向对象编程中的类级资源共享,它都是不可或缺的编程工具。理解`static`的不同用法和特性,对于编写高效、健壮和...

    auto、register、static、extern等存储类修饰符的区别.

    在函数外使用`static`声明的变量具有内部链接,而在函数内部使用的`static`变量则具有无链接,但是它们的共同点是都有静态生存周期。 - **extern**:`extern`关键字用于声明一个变量或函数具有外部链接,这意味着...

    C语言的变量PPT课件.pptx

    3.1.1 示例3-1展示了全程生存期和动态生存期的区别,通过for循环打印变量值,可以直观地看到全局变量和局部变量在生命周期上的差异。 3.1.2 变量的作用域: 作用域决定了变量在哪部分代码中可以被访问。全局作用域...

    第16章、变量作用域和生存期上机指导(实践课).ppt

    变量生存期是指变量从创建到销毁的时间段。变量的生存期与作用域密切相关,但它们并不是同一个概念。根据变量的存储类型不同,其生存期也有所不同。 1. **自动变量**: - 生存期:从变量定义处到函数结束。 - ...

    实验9 - 变量的作用域与生存期

    【变量的作用域与生存期】在C语言中是编程中非常关键的概念,它涉及到变量的定义、使用范围以及生命周期。作用域决定了变量在程序中的可见性,而生存期则决定了变量何时被创建以及何时被销毁。 1. **作用域**: - ...

    局部变量全局变量和存储分类局部变量作用域和生存期实用教案.pptx

    - `static`:静态存储类别,可以用于局部变量(使它在函数调用之间保留值)和全局变量(限制其作用域)。 - `extern`:用于在其他地方声明全局变量,使得它们在整个程序中可见。 4. 变量的存储属性: 除了存储...

    变量的存储方式

    - 静态全局变量:在文件作用域中声明的`static`变量,只在当前文件可见,不会污染全局命名空间,避免了同名变量冲突的问题。 - 静态局部变量:在函数内部声明的`static`变量,仅在该函数内部可见,但其值在函数多...

    浅析php中常量,变量的作用域和生存周期

    在PHP编程语言中,理解和掌握变量、常量以及它们的作用域和生存周期是至关重要的。本文将深入浅出地分析这些概念。 首先,PHP中的变量是动态类型,意味着你无需在声明时指定变量的类型。变量以"$"符号开头,如 `$...

    static 用法

    - **全局性:** 局部静态变量的生存期覆盖整个程序的运行周期。 **示例程序一:** ```cpp #include using namespace std; void staticLocalVar() { static int a = 0; // 运行期时初始化一次,下次再调用时不...

    变量的作用域与生存期PPT学习教案.pptx

    变量的作用域和生存期是编程语言中的核心概念,它们决定了变量在程序中的可见性和生命周期。在C语言等静态类型的编程语言中,理解这些概念对于编写高效、无误的代码至关重要。 1. **变量的作用域(空间特性)** - ...

    第15章、变量作用域和生存期(理论课).ppt

    - 生存周期仅在函数执行过程中。 - **静态的 (static)**: - 局部静态变量在整个程序运行期间存在。 - 即使函数调用结束,其值也会保留。 - **寄存器 (register)**: - 提示编译器将该变量存储在CPU寄存器中,以...

    extern和static的详细用法

    - `static`用于控制变量的作用域和生命周期,可以使变量具有文件内部作用域或使局部变量具有全局生存期。 理解这两个关键字对于编写高效、模块化的代码至关重要。希望本文能帮助读者更好地掌握`extern`和`static`的...

Global site tag (gtag.js) - Google Analytics