IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> c语言—进程 -> 正文阅读

[C++知识库]c语言—进程

进程映像:

程序:储存在磁盘中的可执行的文件(二进制文件、脚本文件)
进程:在系统中运行的程序
进程映像:进程的内存的分布情况

text 代码段:   存储的是二进制的指令、常量数据,权限是只读的(可执行),如果强行修改会产生段错误
data 数据段:   存储的是初始化过的全局变量、被初始化过的静态局部变量
bss  静态数据段:存储的是未初始化过的全局变量、未初始化过的静态局部变量,程序运行前会清零
heap   堆: 由程序员手动管理的,手动申请、释放的,使用比较麻烦,特点是:足够大,理论上无限大
stack  栈: 局部变量、块变量,会随着进程运行而申请、释放,由系统管理的。
                    缺点:大小有限,一次使用过多可能会产生段错误,分配和释放不可控不适合长期使用。 

局部变量和全局变量:

    全局变量:  定义在函数外的
        存储位置: data(初始化过的)或者bss(未初始化过的)
        生命周期: main函数运行开始前到程序结束才释放
        作用范围: 程序中的任何位置
    局部变量:  定义在函数内的
        存储位置:  stack栈内存
        生命周期: 函数的定义语句开始,直到函数执行结束
        作用范围:只能在本函数内使用
    块变量:    定义在if\for\while等语句块内的变量 
        存储位置:  stack栈内存 
        生命周期: 函数的定义语句开始,直到函数执行结束
        作用范围:只能在语句块内使用
    
    注意:局部变量和全局变量可以同名,但是会屏蔽同名的全局变量,同名块变量会屏蔽同名的局部变量和全局变量
        建议:全局变量首字母大写

类型限定符:

auto
    用于定义自动申请、自动释放的变量(局部变量),不加代表了加
    不能用于修饰全局变量
const
    显示地"保护"变量不被修改
    但是,如果要强制修改还是可以修改的
    如果对初始化过的全局变量,用const修饰后,存储位置从data变成了text
extern 
    声明外部的全局变量,声明的变量已在别处定义过,请放心使用
    但是只能临时通过编译,如果没有定义,链接时依然会报错
    只是声明变量,不能赋值
    
static
    被static修饰过的变量称为静态局部变量,局部全局变量
    改变存储位置:
        改变局部变量的存储位置,由stack改data或者bss(由是否初始化决定)
    延长生命周期:
        延长局部变量的生命周期
    限制作用范围:
        限制全局变量、函数只能在本文件内使用
        可以防止函数、全局变量重名、防止被别人调用

存储介质:
    硬盘->内存->高速缓存->寄存器->CPU
register
    申请把变量的存储介质由内存转移到寄存器存储,如果能成功,数据的读取速度会大幅提升,寄存器数量有限,申请可能失败
volatile
    编译器的取值优化:
        变量的值没有发生改变时,后续的取值会进行优化,不再去内存中读取,而是使用第一次读取的结果,可以节约时间
    使用volatile修饰的变量不做取值优化
    volatile int num = 10;
    if(num == num)
    {
        //可能为假
    }
    一般硬件编程和驱动编程时使用
  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-07-15 15:59:28  更:2021-07-15 16:01:30 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/5 8:48:44-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码