加载中…
  
博文
标签:

杂谈

分类: 菜鸟集之C语言

C++拥有几个不同的内存区域,用来存储对象或其它类型的值。每一个区域都有其各自的特点。


请叫出尽可能多的内存区域的名称,并分析每一个区域的性能特征,描述存储在其中的对象的生存周期。


举例:堆栈区(stack)存储自动变量(automatic variables),包括内建类型和类对象等。

 

[解答]


下面总结出了C++程序主要的内存区域。注意,有些名称(比如heap)可能与C++标准中的叫法不一样。

[常量数据(const data)区:]

常量数据区存储字符串等在编译期间就能确定的值。类对象不能存在于这个区域中。在程序的整个生存周期内,区域中的数据都是可用的。

区域内所有的数据都是只读的,任何企图修改本区域数据的行为都会造成无法预料的后果。之所以会如此,是因为在实际的实现当中,即使是最底层的内部存储格式也受制于所实现的特定的优化方案。例如,一种编译器完全可以把字符串存放在几个重叠的对象里面——只要实现者愿意的话。

[栈(stack)区:]

栈区存储自动变量(automatic variables)。一般来说,栈区的分配操作要比动态存储区(比如堆(heap)或者自由存储区(f

  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有