2009-04-16 15 views
27

Un montón es una estructura de datos de árbol donde los niveles superiores 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?¿Cuál es la relación entre "un" montón y "el" montón?

+0

Publicaciones relacionadas [aquí] (https://stackoverflow.com/q/1699057/465053) y [aquí] (https://stackoverflow.com/q/660855/465053) – RBT

Respuesta

23

Nada, para ser sincero. Me imagino que la palabra montón se tomó simplemente con su uso diario (no técnico) y se aplicó a estos dos conceptos individualmente como analogías razonablemente buenas.

En el primer caso (estructura de datos de árbol de significado), la descripción montón es más adecuada porque "mayor" objetos se colocan más arriba en el árbol (donde "mayor" está determinada por una función clave 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 piense en ello). Así es como lo interpretaría; quien primero aplicó el nombre montón a esta estructura de datos pensó que era un nombre apropiado en su mente, y simplemente está atorado.

En el segundo caso (trozos 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 basado en árboles puede han tomado su nombre de la heap del álgebra abstracta, como es bastante común dentro de la informática. Sin embargo, no quisiera confirmar o negar esto ...

2

Ellos ... tienen el mismo nombre! Eso es.

1

Nada. No hay relación.

5

Ambos tienen el mismo nombre, eso es todo.
Allí 'el montón' nunca se organiza como una estructura de datos de montón real.

2

La única relación entre los dos es el nombre "montón".

0

Definición de answers.com

Montón: Un grupo de cosas colocadas o lanzados, uno encima del otro: un montón de trapos sucios que yacen 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)

3

El montón (estructura de datos) se llama así porque si lo dibuja 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.

+0

"si lo dibuja se ve como un montón "-> ¿qué significa el sustantivo predicado de" ... parece un montón "? –

1

Para complicar aún más la pregunta: en algunos sistemas (por ejemplo, Microsoft Windows), hay múltiples "montones" en el sentido de asignación de memoria. El "montón" es simplemente the default heap. Pero si llama al HeapAlloc(), puede elegir desde qué asignación de memoria desea una subasignación.

Cuestiones relacionadas