Standardmäßig hat C nur einen einzigen Heap.
Einige Thread-fähige Zuordner partitionieren den Heap jedoch so, dass jeder Thread seinen eigenen Bereich zum Zuordnen hat. Die Idee ist, dass die Heap-Skalierung dadurch besser werden sollte.
Ein Beispiel für einen solchen Heap ist Hoard.
Nein. Alle Threads teilen sich einen gemeinsamen Heap.
Jeder Thread hat einen privaten Stack, dem er Elemente schnell hinzufügen und daraus entfernen kann. Dies macht stapelbasierten Speicher schnell, aber wenn Sie zu viel Stapelspeicher verwenden, wie es bei unendlicher Rekursion der Fall ist, erhalten Sie einen Stapelüberlauf.
Da sich alle Threads denselben Heap teilen, muss der Zugriff auf den Allocator/Deallocator synchronisiert werden. Es gibt verschiedene Methoden und Bibliotheken zum Vermeiden von Zuweisungskonflikten.
Einige Sprachen erlauben es Ihnen, private Speicherpools oder einzelne Heaps zu erstellen, die Sie einem einzelnen Thread zuweisen können.