Benjamin

静以修身,俭以养德,非澹薄无以明志,非宁静无以致远。
随笔 - 397, 文章 - 0, 评论 - 196, 引用 - 0

导航

<2021年3月>
28123456
78910111213
14151617181920
21222324252627
28293031123
45678910

常用链接

留言簿(51)

随笔分类(393)

随笔档案(397)

文章分类

网站链接

最新随笔

搜索

  •  

积分与排名

  • 积分 - 874092
  • 排名 - 17

最新随笔

最新评论

阅读排行榜

评论排行榜

C++中的内存区域

C++中五种不同类型的内存区域,每种区域中的特性都不同。
1、常量区:主要存储的是字符串和其他在编译期就已知道的数据。它的生命周期和程序等同,并且数据是只读的。如果试图对它修改,结果根据编译器而异。
2、栈区:存储的是自动变量。它的内存分配通常是最快,因为它只涉及的栈指针的操作。它定义时构造,在自动变量作用域结束时销毁。因而我们无法对尚未分配的栈空间操作,除非用显式析够和布局new。
3、自由存储区:由new/delete分配和释放。对象的生命期可能小于分配的存储空间的生命期。即分配内存不一定要初始化,销毁对象未必要释放空间。
4、堆区:通过malloc()/free()分配和释放。在某些编译器中,默认的全局的new/delete调用的malloc()/free().在堆中分配的内存不能在自由存储区安全的释放,反之亦然。在堆内存可用在布局new的构造、析够中。
5、全局/静态区:程序启动时分配了内存,当只有用时才可以初始化。跨编译单元的全局变量的初始化顺序是未定的。
在C++中优先使用自由存储(new/delete),避免用malloc/free.

posted on 2008-07-14 22:47 Benjamin 阅读(357) 评论(0)  编辑 收藏 引用 所属分类: C/C++


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理