C 静态存储区 栈 堆的区别计算机等级考试

文章作者 100test 发表时间 2010:01:02 07:00:43
来源 100Test.Com百考试题网


  学习c++如果不了解内存分配是一件非常可悲的事情。而且,可以这样讲,一个C++程序员无法掌握内存、无法了解内存,是不能够成为一个合格的C++程序员的。

  一、内存基本构成

  可编程内存在基本上分为这样的几大部分:静态存储区、堆区和栈区。他们的功能不同,对他们使用方式也就不同。

  静态存储区:内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。它主要存放静态数据、全局数据和常量。

  栈区:在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限。

  堆区:亦称动态内存分配。程序在运行的时候用malloc或new申请任意大小的内存,程序员自己负责在适当的时候用free或0delete释放内存。动态内存的生存期可以由我们决定,如果我们不释放内存,程序将在最后才释放掉动态内存。但是,良好的编程习惯是:如果某动态内存不再使用,需要将其释放掉,否则,我们认为发生了内存泄漏现象。

  二、三者之间的区别

  我们通过代码段来看看对这样的三部分内存需要怎样的操作和不同,以及应该注意怎样的地方。

  例一:静态存储区与栈区

  char* p = “Hello World1”;

  char a[] = “Hello World2”;

  p[2] =‘A’;

  a[2] =‘A’;

  char* p1 = “Hello World1;”

  C 静态存储区 栈 堆的区别[网摘] - chen_hans - Seа" style="FILTER: . WIDTH: 300px. HEIGHT: 249px" height=249 alt="" hspace=0 src="/NewsFiles/2009-9/25/828133818.jpg" width=300 border=0


相关文章


2009年9月全国计算机二级C语言笔试试题计算机等级考试
2009年下半年全国计算机二级C语言笔试答案计算机等级考试
2009年9月全国计算机二级C语言上机试题计算机等级考试
2009年下半年全国计算机二级C语言上机答案计算机等级考试
C 静态存储区 栈 堆的区别计算机等级考试
c_c 支持可变参数的函数计算机等级考试
常用字符串长度计算函数计算机等级考试
分支限界法之布线问题计算机等级考试
计算机二级C语言辅导:回溯法之数的划分计算机等级考试
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛