Leo*_*Hat 205
大概你的意思是从内存分配的角度来看堆,而不是从数据结构的角度来看(这个术语有多重含义).
一个非常简单的解释是堆是动态分配的内存所在的内存部分(即通过分配的内存malloc).从堆分配的内存将保持分配状态,直到出现以下情况之一:
free'd如果对已分配内存的所有引用都丢失(例如,您不再存储指针),则会出现所谓的内存泄漏.这是仍然分配内存的地方,但你再也没有简单的方法来访问它了.泄漏的内存无法回收用于将来的内存分配,但是当程序结束时,操作系统将释放内存.
将此与堆栈存储器进行对比,堆栈存储器是局部变量(在方法中定义的变量)存在的位置.在堆栈上分配的内存通常仅在函数返回之前存在(对此有一些例外,例如静态局部变量).
您可以在本文中找到有关堆的更多信息.
mjv*_*mjv 15
内存堆是内存中可以随机访问分配内存的位置.
与以非常定义的顺序分配和释放内存的堆栈不同,在堆上分配的各个数据元素通常以彼此异步的方式释放.当程序显式释放相应的指针时,释放任何此类数据元素,这可能导致碎片堆.相反,可以仅释放顶部(或底部,取决于堆栈工作方式)的数据,从而导致数据元素按照它们被分配的相反顺序被释放.
| 归档时间: |
|
| 查看次数: |
107588 次 |
| 最近记录: |