C 存储类/链接/内存管理
来源:互联网 发布:网络推广专员骗局 编辑:程序博客网 时间:2024/06/05 03:18
C 存储类/链接/内存管理
存储类
用于存储程序数据的内存可用存储时期/作用域/链接来表征。存储时期可以是静态的/自动的/或是分配的。
- 如果是静态的,内存在程序开始执行时被分配,并在程序运行时一直存在。
- 如果是自动的,变量所用内在程序执行到该变量定义所在代码块时才开始分配,退出代码块时释放。
- 如果是分配的内存,内存通过调用malloc()分配,通过调用函数free()释放。
作用域
作用域决定了那一部分程序访问某个数据。在所有函数之外定义的变量具有文件作用域,并对该变量声明之后定义的全部函数可见。
在代码块或者作为函数参量定义的变量具有代码块作用于,并只有该代码块及其子代码块中可见。
连接
链接描述了程序的某个单元定义的变量可被链接到其他哪些地方。
- 具有代码块作用于的变量作为局部变量,具有空链接。
- 具有文件作用域的变量可有内部链接或外部链接。内部链接意味着变量只可在包含变量定义的文件内部使用。外部链接意味着变脸也可以在其他文件中使用。
C的5种存储类
- 自动---在一个代码块内声明的变量,无论有没有存储类修饰符auto,都数据自动存储类。该类具有自动存储时期/代码块作用域/空链接。如未经初始化,它的值是不定的。
- 寄存器--在一个代码块内使用存储类修饰符register声明的变量数据寄存器存储类。该类具有自动存储时期/代码块作用域和空链接,并且您无法获得其地址。把一个变量声明为寄存器变量可以指示编译器提供可用的最快访问。如未经初始化,他的值是不定的。
- 静态/空链接-在一个代码块内使用存储类修饰符static声明的变量数据静态空链接存储类。该类具有静态存储时期/代码块作用域和空链接,仅在编译时初始化一次。如未明确初始化,它的字节都被设定为0.
- 静态/外部链接-在所有函数外部定义/未使用存储类修饰符static声明的变量数据静态链接存储类。该类具有静态存储时期/文件作用域和外部链接,仅在编译时初始化一次。如未明确初始化,它的字节都被设定为0.
- 静态/内部链接-在所有函数外部定义/使用存储类修饰符static的变量数据静态/内部链接存储类。该类具有静态存储时期/文件作用域和内部链接,仅在编译时初始化一次。如未明确初始化,它的字节都被设定为0.
内存分配
分配内存是使用函数malloc()提供的内存,该函数返回一个指定具有所请求字节数的内存块地址。将这一块内存的地址作为参数来调用函数free(),可以使该内存块重新可用。
类型限定词
类型限定词说明附有const/volatile/restrict。
- 说明符const将数据限定为不变的。在使用指针时,const可以表明指针本身不变或指针指向的数据不变,这取决于const在声明中的位置。
- 说明符volatile表明数据除了可被程序修改外还可通过其他方式修改,其目的是警示编译器在优化时不要做出相反的假设。
- 说明符restrict也是为了优化而设置。由restrict限定的指针被认为是提供了对其所指向的数据块的唯一访问途径。
0 0
- C -- 存储类、链接和内存管理
- C 存储类/链接/内存管理
- C语言存储类、链接和内存管理总结
- C中的存储类、链接和内存管理
- C primer plus 学习之存储类、链接、内存管理
- 存储类,链接和内存管理
- 存储类、链接和内存管理复习
- 存储类、链接和内存管理
- 存储类,链接和内存管理
- 存储类、链接和内存管理
- 存储类、链接和内存管理
- 存储类、链接和内存管理
- 【C Primer Plus】第十二章 存储类、链接和内存管理
- C语言学习笔记1——存储类、链接和内存管理
- C primer plus第12章(存储类、链接和内存管理)
- C primer plus第12章(存储类、链接和内存管理)习题
- C Primer Plus第12章 存储类、链接和内存管理随笔
- 嵌入式软件开发培训笔记——C高级 存储类、链接和内存管理
- spring总结
- zygote,systemserver 启动分析
- SDCycleScrollView的使用
- Python int与string之间的转化
- C#Thread的Join方法
- C 存储类/链接/内存管理
- EasyCamera摄像机配置
- css3实现手风琴效果
- 项目技巧笔记
- Intellij Idea中运行tomcat JRebel 报內存溢出 解决方案
- IOS Appstore 预览图尺寸
- reflect--反射
- Vani和Cl2捉迷藏 题解+代码
- leetcode No169. Majority Element