浅谈C++中的运行栈的一些知识
来源:互联网 发布:java飞机大战项目介绍 编辑:程序博客网 时间:2024/05/22 05:11
今天又看了一遍有关运行栈的知识,在此,我谈谈我的想法。
栈,顾名思义,就是客栈的意思(通俗来说)。就说明了它是临时歇息的地方,不是长久停留的地方。
变量分全局变量和局部变量,全局变量自始至终有确定的内存地址,而局部变量却没有(部分原因是如果给局部变量分配内存空间的话,在它的生存期结束后(生存期相对于整个程序很短),内存不能释放,造成空间浪费,尤其是局部变量比较多时),那局部变量怎么办呢?这就引入了运行栈这个概念。(注:函数中的变量一般就是局部变量)。
将数据送进运行栈叫做压入栈,送出运行栈叫做弹出栈。
运行栈的运行方式是后进先出。对应于函数调用就是越晚调用的函数越早被弹出。
运行栈本质上还是一段内存空间,只不过和普通内存空间不同的是,它们的读写操作有所不同。
运行栈由一个一个的栈帧组成,每一个栈帧对应一次函数调用,栈帧中可以包含有形参、局部变量和一些临时数据等,当发生函数调用时,函数将实参压入栈中的一段内存空间,这个内存空间是栈中单独拿出的一段空间,主调函数和被调函数都能直接访问这段内存,然后进行形实结合,调用完成后,弹出栈,进行下一个函数调用,以此类推。
其实仔细想一想,运行栈和函数调用联系的比较密切,而函数中的变量大都是局部变量,把它们联系在一起是再合适不过了。
其实可以说运行栈解决了函数调用中局部变量的问题,让这些局部变量在需要的时候有内存地址,完成使命后释放内存地址,从而提高了内存利用率。
以上就是我对运行栈的一些认识。
0 0
- 浅谈C++中的运行栈的一些知识
- c/c++中的一些基础但必须熟记的知识
- c/c++中的一些基础但必须熟记的知识
- c 语言的一些知识
- C语言的一些知识
- C语言中的一些小知识汇集
- c语言中的一些小知识
- 浅谈c语言的知识体系
- 浅谈C++“多态”的一些现象
- 浅谈C++与C的一些不同
- 浅谈C\C++代码优化中的一些小技巧
- 浅谈C\C++代码优化中的一些小技巧
- 浅谈C\C++代码优化中的一些小技巧
- StringBuilder 的一些小知识(C#)
- [C language]一些零碎知识的解释
- C关于时间的一些知识
- C的一些知识【持续更新】
- C++ 与C的一些知识
- unittest模块
- Android解惑 - 为什么要用Fragment.setArguments(Bundle bundle)来传递参数
- NESASM教程——第二天——源文件的结构
- Vim 字符串替换
- More is better(杭电1856)(并查集)
- 浅谈C++中的运行栈的一些知识
- 实验四——计算文本中单词的个数
- 解决The standalone version of hieararchyviewer is deprecated.
- 第十二周项目3-用递归方法求解(二)
- 利用Java抓取网页数据步骤
- Bootload
- poj 1651 Multiplication Puzzle (区间DP)
- 低秩矩阵在机器视觉中的理解--Low-Rank representations
- 贝贝游戏如何买酒吧豆Q 56448299