memory - optimizada - ¿Cuál es la relación entre "un" montón y "el" montón?
url optimizada para seo (9)
Un montón es una estructura de datos de árbol donde los niveles más altos del árbol siempre contienen valores mayores (o menores, si se configura así) que los niveles más bajos. "The" Heap es un montón de RAM libre que un programa tiene disponible para asignación dinámica. Ambos son llamados "montón", pero ¿qué tiene que ver uno con el otro?
Ambos tienen el mismo nombre, eso es todo.
Allí ''el montón'' nunca se organiza como una estructura de datos de montón real.
Definición de answers.com
Heap: un grupo de cosas colocadas o arrojadas, una encima de la otra: un montón de trapos sucios tirados en la esquina.
Es solo un nombre básico debido a la imagen conceptual de tirar cosas de forma desordenada. Como señalan otros carteles, el montón no está organizado como una estructura de datos de montón. Eso depende de las rutinas de asignación de memoria en la biblioteca de su sistema (por ejemplo, compruebe cómo funciona malloc)
El montón (estructura de datos) se llama así porque si lo dibujas se ve como un montón. El montón (memoria) se llama montón porque de alguna manera está organizado, pero no del todo. Usted acumula datos en un montón pero puede tener agujeros e irregularidades. Es como si pusieras papeles en un montón. A veces eliminas uno de la parte inferior. Esto tiene una forma de un montón, es decir, de alguna manera organizado pero no del todo.
Ellos ... tienen el mismo nombre! Eso es.
La única relación entre los dos es el nombre "montón".
Nada más, para ser honesto. Me imagino que el montón de palabras simplemente se tomó con su uso diario (no técnico) y se aplicó a estos dos conceptos individualmente como analogías razonablemente buenas.
En el primer caso (significado de estructura de datos de árbol), el montón de descripción es más adecuado porque los objetos "mayores" se colocan más arriba en el árbol (donde "mayor" está determinado por una función de tecla arbitraria) - es decir, hay una especie de acumulación de objetos más pequeños encima de los más grandes (o más grandes en la parte superior, dependiendo de cómo lo piense). Así es como lo interpretaría; quien primero aplicó el montón de nombre a esta estructura de datos pensó que era un nombre apropiado en su mente, y simplemente está atorado.
En el segundo caso (fragmentos de RAM), el nombre de Heap es quizás un poco más evidente. "Heap" es simplemente "una gran colección de cosas en un orden altamente arbitrario" aquí, que parece aplicarse tan bien en el uso común como lo hace a los trozos de memoria asignados dinámicamente.
En cualquier caso, no me preocuparía por las similitudes metafóricas abstractas que puede trazar entre las dos ideas. Trátelos completamente por separado y no se equivocará en ninguna situación.
Editar: Parece que la estructura de datos basada en árboles puede haber tomado su nombre del heap de álgebra abstracta, como es razonablemente común en la informática. Sin embargo, no quisiera confirmar o negar esto ...
Nada. No hay relación.
Vea este mismo sitio para una exploración del origen del nombre "montón" para la memoria gratuita.
Para complicar aún más la cuestión: en algunos sistemas (por ejemplo, Microsoft Windows), hay múltiples "montones" en el sentido de asignación de memoria. "The" Heap es simplemente el montón predeterminado . Pero si llama a HeapAlloc()
, puede elegir desde qué asignación de memoria desea una HeapAlloc()
.