【发布时间】:2010-12-04 20:01:43
【问题描述】:
静态分配、动态分配和自动分配有什么区别?
【问题讨论】:
标签: dynamic static oop memory-management
静态分配、动态分配和自动分配有什么区别?
【问题讨论】:
标签: dynamic static oop memory-management
静态分配是在应用程序首次加载时为其预留的内存。这部分内存仅供该应用程序使用,并在程序关闭后再次可用。
动态分配是根据需要分配的内存,并在不再需要时释放/释放。堆和堆栈是可以动态分配的内存区域的示例。
【讨论】:
会有特定语言的细节,但总体思路是:
动态分配需要更多解释:它是在您分配时分配的(例如,使用“新 XXX”之类的东西)。在(大多数实现)C++ 中,它会一直存在,直到您明确删除它。对于大多数较新的语言(例如 Java、C#),它会一直存在,直到垃圾收集器确定它不再可访问,届时它将被自动销毁。
并非所有语言都具有所有三种分配形式。在某些情况下(例如 Java),即使支持某种分配形式,也存在一些限制,例如允许对内置类型进行自动分配,但要求对对象类型(即类的实例)进行动态分配。
【讨论】: