在看书时发现了这几个概念有些混乱,和同学们讨论也觉得这个地方没搞懂,包括网上的一些对于这方面的介绍,让自己更糊涂了。花了几天时间,稍微弄懂了些。
之所以有些混乱,我觉得是基本概念没有搞清楚,我查阅了英文版的C++primer,首先把一些定义搞清楚,所以这件事情告诉我们还是外文原版的书靠谱啊!!
下面截一些c++primer的原文,再加上自己的理解。
C++ has three ways of managing memory for data, depending on the method used to allocate memory: automatic storage, static storage, and dynamic storage, sometimes called
the free store or heap.
C++有三种方法去管理数据在内存中的分配:automatic storage, static storage, 和dynamic storage(有时候被叫做free store或者堆)
第一种automatic storage:通常一个变量定义在一个函数中,用auto修饰符修饰的变量,就在这个存储区中。我们知道一般auto修饰符是可以省略的,也就是说在函数中定义的没有static修饰的就在这个存储区内。而automatic storage通常用一个栈结构来维护。也就是说函数中大多数的变量都维护在这个内存区,也就是我们通常所说的栈中。
第二种叫做static storage:这个存储区在整个程序运行的过程中都存在,有两种方式来声明一个在该存储区的变量,一种是在声明变量前加static,第二种是将变量声明在函数