c++primer plus之如何处理内存

来源:互联网 发布:hibernate 数据库配置 编辑:程序博客网 时间:2024/05/21 07:04

根据分配内存的方法,c++有三种管理数据内存的方式:自动存储,静态存储和动态存储。在存在时间的长度方面,这三种方式分配的数据对象各不相同。

1:自动存储

在函数内部定义的常规变量使用自动存储,被称为自动变量,在所属函数被调用时存在,该函数结束时消亡。自动变量是一个局部变量,其作用域为包含它的代码块。自动变量通常存储在栈中,执行代码块时,其中的变量将依次加入到栈中,而在离开代码块时,将按照相反的方向释放这些变量,意味着后进先出(LIFO)。执行过程中,栈将不变增大或缩小

2:静态存储

变量在整个程序执行过程中都存在的存储方式。使变量成为静态的方式有两种:一是在函数外面定义它,二是在声明变量时使用关键字static:例如,static double fee = 56.5;

3:动态存储

new和delete运算符提供了一种比自动变量和静态变量更加灵活的方法。它们管理了一个内存池,这在c++中被称为动态存储空间或堆。该内存池用于存储静态变量和动态变量的内存是分开的,因此,数据的生命周期不完全受函数的生存周期控制。在栈中,自动添加和删除机制使得内存占用的存储空间都是连续的,而new和delete的相互影响使得内存池中占用的存储空间不连续,因此,追踪这些内存的位置更困难。

0 0