注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

Kandy

长风破浪会有时,直挂云帆济沧海!

 
 
 

日志

 
 

C++的3种管理数据内存的方式  

2009-05-23 19:28:47|  分类: C++知识点 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

       根据用于分配内存的方法,C++有3种管理数据内存的方式:自动存储、静态存储和动态存储(有时候也叫作自由存储空间或堆)。在存储时间方面的长短方面,以这3种分配的数据对象个不相同。下面简要的介绍每一种类型。
1.自动存储
       在函数的内部定义的常规变量使用自动存储空间,表内成为自动变量,这意味着它们在所属的函数被调用时自动产生,在该函数结束时消亡。实际上,自动变量是一个局部变量,其作用域为包含它的代码块。代码块是被包含在花括号中的一段代码。到目前为止,我们使用的所有代码块都是整个函数。不过,函数内也可以有代码块。如果在其中的某个代码块定义了一个变量,则该变量仅砸死程序执行该代码块中是代码的时候存在。
2.静态存储
       静态存储是整个程序执行期间都存在的存储方式。使变量成为静态存储方式的方法有两种:一是在函数外面定义它;另一种是在声明变量的时候使用关键字static:
static double fee= 56.50;
       在K&RC中,只能初始化静态数据和静态结构,而C++版本2.0(以及以后版本)和ANSI C中,也可以初始化自动数组和自动结构。不过,有些C++实现还不支持对自动数组和自动结构的初始化。自动存储和静态存储的关键在于:这些方法严格限制了变量的寿命。变量可能存在于 程序的整个生命周期(静态变量),也可以只是在特定函数被执行时存在(自动变量)。
3.动态存储
       new和delete操作符提供了一种比自动变量和静态变量更灵活的方法。它们管理了一个内存池,这在C++中被称为自由存储空间。内存池同用于静态变量和自动变量的内存是分开的。new和delete允许在一个函数中分配内存,而在另一个函数中释放它。因此,数据的生命周期就不完全收到程序或函数的生存时间的控制了。与使用常规变量相比,使用new和delete是程序员对程序如何使用内存有更大的控制权。

 

补充:

 C++使用3 种不同的方案来存储数据,这些方案的区别就在于数据保留在内存中的时间。

.自动存储持续性:在函数定义中声明的变量(包括函数参数)的存储持续性为自动的。它们在程序开始执行其所属的函数或代码块时被创建,在执行完函数或代码块时,它们使用的内存被释放。C 十+有两种存储持续性为自动的变量。

.静态存储持续性:在函数定义外定义的变量和使用关键字static定义的变量的存储持续性都为静态。它们在程序整个运行过程中都存在。C ++有3 种存储持续性为静态的变量。

.动态存储持续性:用new 操作符分配的内存将一直存在,直到使用delete 操作符将其释放或程序结束为l 仁。这种内存的存储持续性为动态,有时又称为自由存储(free store )。

  评论这张
 
阅读(163)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017