Englische Bezeichnung für "Haufen" oder "Halde" Ein (Windows-)Heap ist ein Bereich des Arbeitsspeichers, der vom Betriebssystem (Windows) zur Verfügung gestellt wird und aus dem Programme dynamisch - also zur Laufzeit - Speicherblöcke anfordern können (vergleiche mit DLL). Im Gegensatz zu Batch- oder Stapelspeichern (Stacks) werden Heap-Speicherblöcke nicht in umgekehrter Reihenfolge ihrer Zuordnung freigegeben. Dadurch werden ganz unweigerlich freie Blöcke mit solchen Blöcken vermischt, die noch von Programmen verwendet werden. Nach Beendigung eines Programms muß das Betriebssystem den Arbeitsspeicher deshalb reorganisieren: Speicherblöcke, die nicht mehr benötigt werden, werden freigegeben; die weiterhin belegten Blöcke werden hingegen so verschoben, daß der freie Speicher in möglichst großen Blöcken zur Verfügung steht.
Ein Heap beschreibt auch eine Organisationsform von Dateien: Ein Heap ist ein binärer Baum, in den ebenenweise Elemente eingegeben werden. Danach werden die Knoteninhalte so vertauscht, daß in jedem Teilbaum das größte (kleinste) Element in dessen Wurzel steht. Steht das größte (kleinste) Element in der Wurzel, spricht man von einem Maxheap (Minheap) - siehe Grafik von Michael J. Tauber (www.uni-paderborn.de/~tauber/index.html)