您当前的位置: 首页 >  c++

RuiH.AI

暂无认证

  • 0浏览

    0关注

    274博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

C++学习 十二、内存模型,作用域,名称空间 (2)内存模型

RuiH.AI 发布时间:2022-02-11 21:25:53 ,浏览量:0

C++学习 十二、内存模型,作用域,名称空间 (2)内存模型
  • 前言
  • 存储持续性,作用域,链接性
    • 存储持续性
    • 作用域
    • 链接性
  • 自动存储
    • 自动变量,栈
    • 关键字auto, register
  • 静态存储
    • 全局变量,静态全局变量,静态局部变量
    • 静态初始化,动态初始化
    • 全局变量,外部变量,关键字extern
    • 静态全局变量
    • 静态局部变量
    • const全局变量
  • 函数的存储持续性与链接性
    • 内联函数
  • 动态存储
    • new运算符初始化
  • 后记

前言

本篇继续C++学习记录,变量与函数的内存模型。

存储持续性,作用域,链接性 存储持续性

存储持续性指的是数据保留在内存中的时间。

C++中,数据的存储方案有三种,分别是自动存储,静态存储和动态存储。

在函数或代码块中声明的变量就是自动变量,对应自动存储,在执行函数或者代码块时被创建,执行段结束后释放内存。

在函数外定义和使用static关键字声明的变量就是静态变量,对应的是静态存储,在程序运行时被创建,程序结束时释放内存。

通过new分配的内存是动态存储,new的时候创建,delete的时候释放内存。

作用域

作用域指的是符号在文件中的可见范围。

函数中定义的变量可在该函数内定义变量的语句之后使用。

函数外定义的变量可在定义变量语句之后的函数中使用。

链接性

链接性指的是符号在不同文件中的共享性质。

外部链接性可在一同编译的文件中共享。

内部链接性只在该文件中的函数共享。

无链接性则不能被共享。

自动存储

一般而言,在函数中声明的变量是自动变量,自动存储持续性,局部作用域,无链接性。

自动变量在程序执行到函数或代码块时被分配内存,但作用域的起点在变量声明的位置,在代码块执行完后释放内存,变量被销毁。

代码块是在函数内部使用大括号括起来的部分:

void main(){
	int a = 0;
	{ // a的内存被分配 
		double a = 1.1; // 内部a的作用域起点
		cout             
关注
打赏
1658651101
查看更多评论
0.0400s