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限定的指针被认为是提供了对其所指向的数据块的惟一访问途径。
  • 相关阅读:
    专职DBA-MySQL体系结构与基本管理
    JSON
    MIME类型
    文件上传下载
    response常用的方法
    2020.11.27小记
    HTTP请求状态码
    1561. Maximum Number of Coins You Can Get
    1558. Minimum Numbers of Function Calls to Make Target Array
    1557. Minimum Number of Vertices to Reach All Nodes
  • 原文地址:https://www.cnblogs.com/qwertWZ/p/2868166.html
Copyright © 2011-2022 走看看