C++-作用域和生命周期
来源:互联网 发布:张龙java视频全集 编辑:程序博客网 时间:2024/04/26 15:11
变量类型及生命期
一个程序在其运行期间,它的程序代码和数据会被分别存储在4个不同的内存区域。
程序代码区:程序的各函数代码存放在此区域中;
全局数据区:程序的全局数据(如全局变量)和静态数据(static)存放在此区域中;此区域中的数据由C++编译器建立,对于定义时没有初始化的变量,系统会自动将其初始化为0。这个区域中的数据会一直保存,直到程序结束时才由系统负责回收。
栈区:程序的局部数据(在函数中定义的数据)存放在此区域中;需要注意static类型的局部变量存储在此。只有当函数被调用时,系统才在栈区中为它们分配存储空间,并且不会对分配的存储单元做初始化,一旦函数调用完成,系统就会回收这些变量在栈区中的存储单元。
堆区:程序的动态数据(new,malloc)就在此区域中分配存储空间;用完之后由程序员用delete或free将其归还给系统。
静态变量可分为静态全部变量和静态局部变量,前者的作用于是整个程序范围,后者的作用域局限于定义它的语句块。静态局部变量的作用域与普通局部变量的作用域是相同的,但它与全局变量有着同样的生命期。
变量初始化
未提供初始化的全局数据区中的变量将被系统自动初始化为0,堆和栈中的变量不被初始化。
局部变量与函数返回地址
当使用指针或引用从函数中返回一个地址时需要小心,一定不要返回局部变量的指针或引用。
0 0
- C++-作用域和生命周期
- C语言中的作用域和生命周期
- C语言变量作用域和生命周期
- 【C语言】生命周期和作用域
- 作用域和生命周期
- 作用域和生命周期
- C语言 变量的作用域和生命周期
- C语言中变量的作用域和生命周期
- C语言 变量的作用域和生命周期
- C语言中变量的作用域和生命周期
- C语言中变量的生命周期和作用域
- MyBatis作用域和生命周期
- 20170128C语言提升01_数据本质和static和生命周期和作用域
- VB中的作用域问题和生命周期
- spring bean的作用域和生命周期
- 检查自变量的生命周期和作用域
- spring2 bean作用域 和 生命周期
- mybatis基础--作用域和生命周期
- Python获取Shadowsocks账号
- 461. Hamming Distance
- redis源码分析(一)-字典(dict)的实现
- Java Scanner用法详解
- POJ 3304 Segments 已被翻译
- C++-作用域和生命周期
- Hbase笔记一之基本概念,安装
- Kafka log结构解读
- JavaScript正则表达式(二)—— 修饰符
- 我的CSDN技术博客生活正式开始
- MariaDB基本管理操作
- 【经典】【积累】
- 求 1+2!+3!+...+20!的和
- codeforce 754 D k个区间的交的尽可能的大 (优先队列) 贪心好题!!!