程序设计的基本原则:栈和堆

翻译 2017年01月03日 14:46:33

stack栈
heap堆

我们使用更多,更先进的编程语言,使我们能够写更少的代码,并获得优异的成就。对于支付。当我们成为低层次的东西少趋于正常,我们许多人并不完全理解堆和栈实际发生的编译,就是静态和动态类型等之间的差异我不是说所有的程序员不知道这些事情 - 我只是觉得,有时候是值得回过头来这样的老学校的事情。
今天,我们将谈论一件唯一的话题:栈和堆。且堆栈,和很多关注到不同的位置,其中,存储器管理,但这种管理策略是根本不同的。


栈 - 这是对每个线程创建的内存区域。他的作品以LIFO(后入先出),即加入到堆栈存储器的最后一块将是排在第一位堆栈撤出。每次函数声明一个新的变量,它被添加到堆栈中,以及当可变滴出的范围(例如,当函数结束时),它会自动从堆栈中删除。当堆栈变量被释放,该存储区可用于其它堆栈变量。

由于这种性质栈存储器管理是很合乎逻辑的,简单到CPU上执行的;这导致高的速度,特别是,由于周期时间更新字节堆栈是很小的,即这个字节是可能依赖于处理器的高速缓存中。然而,在这样的控制的一个严格的形式也有其缺点。堆栈大小 - 是一个固定值,和过量的分配给存储器堆的限制将导致堆栈溢出。在创建流时指定的尺寸,并且每个变量具有的取决于数据的类型的最大尺寸。这使您可以限制一些变量(例如,整数)的规模,并被迫提前申报更复杂的数据类型的大小(如数组),因为堆栈不允许他们去改变它。此外,变量,位于堆栈上总是本地。因此,栈可以让你更有效地管理内存 - 但如果你需要使用动态数据结构和全局变量,这是得关注的堆。

堆 - 一个存储器存储,也设在RAM中,其允许的存储器的动态分配,并且不会在堆叠的原理工作:它仅仅是为你的变量仓库。时分配的堆存储器区域,用于存储一个变量,它可以应用不仅在信息流中,而且在整个应用程序。由所述全局变量来确定。这些应用程序分配内存后的区域将被释放。当你运行应用程序堆大小设置,但不像栈,它只是身体上有限的,它可以让你创建动态的变量。
你用一束参考,通常被称为指针交互 - 是变量,其值是其它变量的地址。创建一个指针,指向在堆上的存储器位置,该设置变量的初始值和告诉程序访问此值。由于CPU堆不参与在它的控制的动态特性;在没有垃圾收集(C,C ++)开发的语言需要手动释放不再需要的内存区域。如果不这样做,有可能泄漏和存储器碎片,这显著减慢堆。
在与堆栈相比,堆是慢的,因为变量是散射存储器,并且不坐在堆栈的顶部。不正确的内存管理,堆减慢它的操作;然而,这并没有减弱它的重要性 - 如果你需要一个充满活力和全局变量的工作,使用堆。

结论

所以,你已经结识了栈和堆的概念。总之,堆栈 - 它是非常快的存储器存储,在后进先出的原则工作和由处理器控制的。但这些优点导致堆栈的尺寸限制,并且用于产生值的特殊方法。为了避免这些限制,您可以用一束 - 它允许你创建动态和全局变量 - 但必须管理内存或垃圾收集,或程序员,和一堆运行速度较慢的。


java面向对象程序设计的六大基本原则

java面向对象程序设计的六(七)大基本原则

面向对象程序设计的基本原则

所有的设计模式都是对不同的可变性的封装,从而使系统在不同角度达到“开闭原则”的要求。 在软件软件系统中,一个模块设计得好不好的最主要、最重要的标志,就是该模块在多大程度上将自己的内部数据和其他与...

WF4.0 基础篇 (三) 流程实例WorkflowApplication与设计WF程序的基本原则

通过本节,可以初步了解WF程序的特性,为以后的WF类应用开发提供一个初步的感性认识  目录 1    流程实例WorkflowApplication与设计WF程序的基本原则    1 1.1    流...

OOD设计基本原则整理.doc

  • 2011年06月29日 10:51
  • 127KB
  • 下载

C++Primer::头文件设计基本原则 与 预处理器介绍

1.学会编写自己的头文件 有多个文件组成的程序需要一种方法连接名字的使用和声明,在C++中就是通过头文件实现的。C++程序使用头文件包含的不仅仅是类定义。 为了允许把程序写成独立的逻辑块,C++支持所...

好设计该具备这10项基本原则

转自:折腾先生 英文:vitsoe 译者:Feeng

设计模式之面向对象七大基本原则

PS一句:最终还是选择CSDN来整理发表这几年的知识点,该文章平行迁移到CSDN。因为CSDN也支持MarkDown语法了,牛逼啊!概述在运用面向对象的思想进行软件设计时,需要遵循的原则一共有7个,他...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:程序设计的基本原则:栈和堆
举报原因:
原因补充:

(最多只允许输入30个字)