Jer*_*fin 14

将提供特定于语言的详细信息,但总体思路是:

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

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

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