C++——定义变量的底层实现理解
来源:互联网 发布:windows虚拟内存设置 编辑:程序博客网 时间:2024/06/05 23:59
我们在定义一个变量的时候,编译器会在内存中为其分配响应的存储空间。不知你有没有注意到,比如:int a=10;a地址是:0xXXXXXXXX。在a的地址中存储的是10这个常量数字,这个地址空间被分配给变量a了。在此,我们可能会产生一个疑问变量名a是放在哪个哪里的,如果变量名a没有存储到某一个位置,那么编译器又是通过什么来锁定a的地址空间的呢?
说到这里,我们需要来说一下,其实我是个C/C++菜鸟,目前还没能够理解C/C++的核心思想。下面,我们讲解,只是对基础学习同仁传授一个合理的理解方式。
我们知道OS对每个运行的程序都会虚拟出一个虚拟地址空间来供该程序使用这个地址空间大小是4G,这里从上到下有:内核区和用户区。我们主要关注用户区的3G空间。
回到变量定义上来,我们定义的局部变量是在栈空间区域分配存储空间的,而变量名a是存放在符号表中的变量表里面。变量表里定义了:变量的名称,变量的类型,变量的所指的空间,这里有点类似于数组名相当于数组的首地址。符号表中存储变量a的名称,之后存储a的地址空间,当编译器需要调用变量a时,就会自动在符号表中扫描知道找到变量a的名称为止,然后再提取出变量a后面的地址,根据这个地址到虚拟内存空间中找到变量a的数值,进行操作。
当需要删除变量a时,只需要OS只是删除符号表中的变量a这一项。(也可能是把变量a对应的地址空间的值置为某个值后再删除符号表中的变量a项。这里我们不具体讨论,到以后熟悉了C底层的实现原理,再来更正我的理解)。
附加一张图:
0 0
- C++——定义变量的底层实现理解
- 变量的底层实现
- 静态变量的定义理解——主要是C族语言static
- C++——变量的声明、定义
- php底层变量的实现
- php底层变量的实现
- 关于Object-C 底层实现self isa 的理解
- 关于Object-C 底层实现self isa 的理解
- Objective-C 的底层实现
- Php变量底层实现
- 计算机底层实现的一些理解思路
- 深入理解Lock的底层实现原理
- 理解C++中引用的底层实现
- c——汇编角度理解类型定义 对象定义
- 关于变量重复定义的理解
- 变量声明和定义的深入理解
- 浅谈 变量以及函数的声明以及定义,以及对extern “C”的理解
- 【C/C++】变量的定义与声明
- 生成json接口
- 由html,body{height:100%}引发的对html和body的思考
- C#对串口数据接收的处理
- Eclipse的PHP插件PHPEclipse安装和使用
- 数据库报错处理方式 诸多
- C++——定义变量的底层实现理解
- 1002:归并排序
- 第一个程序(JavaScript)_使用Notepad.exe和Microsoft Edge
- ubuntu 安装配置mysql
- frame中隐藏横向滚动条
- AlertDialog更改系统默认布局的方法
- 上传media数据到微信,然后获取media_id
- LeetCode *** 88. Merge Sorted Array
- android imageView释放内存