zoukankan      html  css  js  c++  java
  • C的存储类、链接和内存管理

    C有5种存储类:

    • 自动——在一个代码块内(或在一个函数头部作为参量)声明的变量,无论有没有存储类型修饰符auto,都属于自动存储类。该类具有自动存储时期、代码作用域和空链接。如未经初始化,它的值是不定的。
    • 寄存器——在一个代码块内(或在一个函数头部作为参量)使用存储类修饰符register声明的变量属于寄存器存储类。该类具有自动存储时期、代码作用域和空链接,而且无法获得其地址。把一个变量声明为寄存器变量可以指示(建议)编译器提供可用的最快访问。如未经初始化,它的值是不定的。
    • 静态、空链接——在一个代码块内使用存储类修饰符static声明的变量属于静态空链接存储类。该类具有静态存储时期、代码作用域和空链接,仅在编译时初始化一次。如未明确初始化,它的字节都被设定为0。
    • 静态、外部链接——在所有函数外部定义、未使用存储类修饰符static声明的变量属于静态、外部链接存储类。该类具有静态存储时期、代码作用域和外部链接,仅在编译时初始化一次。如未明确初始化,它的字节都被设定为0。
    • 静态、内部链接——在所有函数外部定义、使用存储类修饰符static声明的变量属于静态、内部链接存储类。该类具有静态存储时期、代码作用域和内部链接,仅在编译时初始化一次。如未明确初始化,它的字节都被设定为0。

    分配内存是使用函数malloc()(或相关的函数)提供的内存,该函数返回一个指向具有所请求字节数的内存块的指针。将这一个内存块的地址作为参数来调用函数free(),可以使该内存块重新可用。

    类型限定词说明符有const、volatile和restrict。

    • 说明符const将数据设定为不变的。在使用指针时,const可以表明指针本身不变或指针指向的数据不变,这取决于const在声明中的位置。
    • 说明符volatile表明数据除了可被程序修改外还可以通过其他方式修改,其目的是警示编译器在优化时不要做出相反的假设。
    • 说明符restrict也是为了优化而设置。由restrict限定的指针被认为是提供了对其所指向的数据块的惟一访问途径。
  • 相关阅读:
    Programming Windows 第五版读书笔记 第三章 窗口和消息
    一个带游标的遍历数据的函数|数据库操作|软件开发
    递归删除一个文件夹下的所有文件c#代码
    杭州市市民卡办理点
    NTLDR is missing 的解决方法
    SQL Server中 将日期格式化.函数 CONVERT
    1.显示网页中的所有图片
    用sql函数获取中文字符串的全拼
    地柜便利一个文件夹下的所有文件|软件开发
    软件是什么
  • 原文地址:https://www.cnblogs.com/qwertWZ/p/2868166.html
Copyright © 2011-2022 走看看