C 从栈和堆来理解C#中的值类型和引用类型计算机等级考试

文章作者 100test 发表时间 2010:01:01 12:59:53
来源 100Test.Com百考试题网


  C 中并没有值类型和引用类型之说,标准变量或者自定义对象的存取默认是没有区别的。但如果深入地来看,就要了解C 中,管理数据的两大内存区域:栈和堆。
  栈(stack)是类似于一个先进后出的抽屉。它的体积是有限的,一般为2M左右。
  而堆(heap)则相对来说体积可以很大,这一般跟计算机的虚拟内存设置有关系。
  栈中存取对象的内存是自动回收的,用完即销毁了,一般方法内部的变量和参数都是通过栈来存取的(但也正因为如此,它们的生命周期很短)。但它的问题是,体积有限。
  一些大的对象,我们可能要通过堆来创建它。程序员可以控制这些对象什么时候创建,什么时候销毁。这无疑带来了灵活性,也同时带来了一些风险,事实上,相当一部分的程序的崩溃都是因为不恰当地使用了堆,以及没有及时清理在堆上申请的内存。或者反过来说,可能会清理多次(这也会导致崩溃)。
  通常来说,如果希望某个对象或者变量的生命更长一些,也可以将其作为全局变量或者静态变量。但那样又导致了它们必须等到程序结束才会释放。
  下面我用一个例子来演示一下这个问题
  #include

相关文章


顺序表的初始化、删除、插入计算机等级考试
C 中强制转换函数总结计算机等级考试
计算机二级辅导:C 内存泄漏检测拾遗计算机等级考试
计算机二级辅导:C 引用和地址运算符计算机等级考试
C 从栈和堆来理解C#中的值类型和引用类型计算机等级考试
C 类型的别名和对象的别名计算机等级考试
与和逻辑与 非和逻辑非计算机等级考试
VS2005设置WDK编译环境计算机等级考试
C 辅导:C 获取和设置时区计算机等级考试
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛