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
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?