【问题标题】:Static allocation vs. Dynamic allocation vs. Automatic allocation静态分配 vs. 动态分配 vs. 自动分配
【发布时间】:2010-12-04 20:01:43
【问题描述】:

静态分配、动态分配和自动分配有什么区别?

【问题讨论】:

    标签: dynamic static oop memory-management


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

      • 静态:在程序启动时分配,在程序的整个生命周期都存在
      • 自动:在进入块时分配,在该块的持续时间内存在

      动态分配需要更多解释:它是在您分配时分配的(例如,使用“新 XXX”之类的东西)。在(大多数实现)C++ 中,它会一直存在,直到您明确删除它。对于大多数较新的语言(例如 Java、C#),它会一直存在,直到垃圾收集器确定它不再可访问,届时它将被自动销毁。

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

      【讨论】:

        猜你喜欢
        • 2020-12-05
        • 1970-01-01
        • 2015-05-02
        • 2012-11-08
        • 1970-01-01
        • 2016-02-01
        • 2019-06-25
        • 2016-10-21
        • 2012-01-13
        相关资源
        最近更新 更多