Pourquoi le tas d'exécution est-il utilisé pour l'allocation de mémoire dynamique dans les langages de style C et la structure de données appelée «le tas»? Y a-t-il une relation?
c++
heap
terminology
heap-memory
Andrey Fedorov
la source
la source
Réponses:
Donald Knuth dit (The Art of Computer Programming, Third Ed., Vol.1, p. 435):
Il ne dit pas quels auteurs et ne donne aucune référence à des articles spécifiques, mais dit que l'utilisation du terme «tas» par rapport aux files d'attente prioritaires est le sens traditionnel du mot.
la source
Ils portent le même nom mais ils ne sont vraiment pas similaires (même conceptuellement). Un tas de mémoire est appelé un tas de la même manière que vous appelleriez un panier à linge un "tas de vêtements". Ce nom est utilisé pour indiquer un endroit quelque peu désordonné où la mémoire peut être allouée et désallouée à volonté. La structure des données (comme le lien Wikipédia auquel vous faites référence le souligne) est assez différente.
la source
La collision de noms est malheureuse, mais pas si mystérieuse. Heap est un petit mot courant utilisé pour désigner une pile, une collection, un groupe, etc. L'utilisation du mot pour la structure de données précède (j'en suis sûr) le nom du pool de mémoire. En fait, la piscine aurait été un bien meilleur choix pour ce dernier, à mon avis. Heap connote une structure verticale (comme une pile), qui correspond à la structure de données, mais pas au pool de mémoire. Nous ne considérons pas un tas de pool de mémoire comme hiérarchique, alors que l'idée fondamentale derrière la structure de données est de garder le plus grand élément en haut du tas (et des sous-tas).
Heap la structure des données remonte au milieu des années 60; tas de mémoire, le début des années 70. Le terme tas (qui signifie pool de mémoire) a été utilisé au moins dès 1971 par Wijngaarden dans les discussions sur Algol.
Peut-être que la première utilisation du tas comme structure de données se trouve sept ans plus tôt dans
Williams, JWJ 1964. "Algorithm 232 - Heapsort", Communications of the ACM 7 (6): 347-348
la source
En fait, lire sur la façon dont la mémoire est allouée (voir Buddy Blocks ) me rappelle un tas de structures de données.
la source
OMI c'est simplement un accident / coïncidence que ces deux choses totalement indépendantes aient le même nom. C'est comme un graphique et un graphique .
la source
Une structure de données semblable à un tas est utilisée par l'algorithme de recherche d'allocation de mémoire disponible. Ce qui suit est extrait de http://www.cprogramming.com/tutorial/virtual_memory_and_heaps.html .
la source
Les termes familiers de mémoire de pile et de mémoire de tas ne sont pas utilisés dans la norme C ++. La norme utilise le stockage statique, le stockage des threads, le stockage automatique et le stockage dynamique.
Plus d'informations peuvent être trouvées dans la section Stockage Duraction de la norme.
Par conséquent, du point de vue du langage et de la bibliothèque standard, il n'y a pas de confusion.
la source
Q. Qu'est-ce qu'un tas? A. Un tas est une collection d'objets placés les uns sur les autres.
Réponse à votre question: le tas de mémoire et le tas binaire utilisent le même concept que vous connaissez. Les données sont stockées sous la forme d'un tas dans la mémoire dans le même ordre que celui écrit dans le programme alors que le tas binaire est une structure de données qui suit le même concept de stockage des données de manière ordonnée sous la forme d'un tas (Données en haut de l'autre). Dites-moi ce que vous pensez dans la section commentaires.
la source
Peut-être que le premier tas de mémoire implémenté a été géré par une structure de tas?
la source