c++程序实体的生存期和作用域

每个程序实体在程序执行中都有从创建到被撤消的一段时间,这段时间就称为该程序实体的生存期。在生存期内程序实体的标识符与它的存储区相关联。因此,程序实体的生存期由系统为其分配的内存方式所决定C++为程序实体提供了四种内存分配方式:静态分配(编译器预分配)、栈分配(自动分配)、堆分配(动态分配)、只读分配

    (1) 静态分配

系统可以为每个程序开辟一个固定的静态数据区。存于这区域中的程序实体在编译时即被预分配存储空间,并且在程序开始执行时就被创建,一直到程序结束才被撤消,故称为永久存储。静态分配的特点是与程序共存亡,具有静态生存期。这种分配适合于那些在程序中用得不多,但要为多个函数共用的程序实体。

(2) 栈分配

栈是系统为程序开辟的活动存储区,它是程序使用最频繁的存储区。一个实体,一旦在一个函数内部或一个块内部被声明,系统便在栈中创建它们;该块或函数执行结束,遂将其弹出撤消。这种程序实体具有局部生存期,即它与所在的块共存亡。这种分配适合于那些在程序中使用频繁的程序实体,随建随撤,节省空间。

(3) 动态分配

    动态分配将产生一种完全由程序员控制生存的程序实体。在C++中,程序员可以利用专门的运算符newdelete来创建和撤消程序实体。

    (4) 只读分配

即用const声明的程序实体,可以认为是被创建在程序的只读存储区中。

作用域实际上就是程序实体的作用范围,而在此范围之外,该程序实体是不可见的。C++的这种特性使得在同一个程序中使用两个名字相同的程序实体成为可能,只要这两个程序实体的作用域不同就行。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值