Guru of the Week 条款09:内存管理(上篇)

 

GotW #09 Memory Management - Part I

著者:Herb Sutter     

翻译:kingofark

[声明]:本文内容取自www.gotw.ca网站上的Guru of the Week栏目,其著作权归原著者本人所有。译者kingofark在未经原著者本人同意的情况下翻译本文。本翻译内容仅供自学和参考用,请所有阅读过本文的人不要擅自转载、传播本翻译内容;下载本翻译内容的人请在阅读浏览后,立即删除其备份。译者kingofark对违反上述两条原则的人不负任何责任。特此声明。

Revision 1.0

Guru of the Week 条款09:内存管理(上篇)

 

难度:3 / 10

 

(本条款介绍C++中几个主要内存区域的基本知识。条款10将会继续本条款的话题,深入讨论一些内存管理的问题。)

 

 

[问题]

 

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

 

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

 

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

 

 

[解答]

 

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

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

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

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

[栈(stack

阅读终点,创作起航,您可以撰写心得或摘录文章要点写篇博文。去创作
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

kingofark

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值