2009-10-08 134 views

回答

11

会有特定语言的细节,但总体思路是:

  • 静:在程序启动时分配,存在着程序的整个生命
  • 自动:在进入分配成块,存在该块的持续时间

动态分配需要更多的解释:它在分配时进行分配(例如,使用类似'new XXX'的东西)。在C++的(大部分实现中),它会一直存在,直到你明确地删除它。使用大多数较新的语言(例如Java,C#)它会一直存在,直到垃圾收集器确定它不再可访问,此时它将自动销毁。

并非所有的语言都有三种形式的分配。在某些情况下(例如Java),即使支持某种形式的分配,也存在限制,例如允许为内置类型自动分配,但需要为对象类型(即类的实例)进行动态分配。

3

静态分配是在第一次加载时为应用程序预留的内存。这部分内存仅保留在该应用程序中,并在程序关闭后再次使用。

动态分配是根据需要分配的内存,并在不再需要时释放/释放。堆和堆栈是可以动态分配的内存区域的示例。