Benjamin

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

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 阅读(353) 评论(0)  编辑 收藏 引用 所属分类: C/C++


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