Alloc-Funktion

Reserviert einen Speicherblock mit der in der Unterbelegungsfunktion für die Zwischenspeicherung der Concurrency Runtime angegebenen Größe.

_CRTIMP void * __cdecl Alloc(    size_t _NumBytes );

Parameter

  • _NumBytes
    Die Anzahl der zu belegenden Speicherbytes.

Rückgabewert

Ein Zeiger auf neu reservierten Speicher.

Hinweise

Verwenden Sie die Zwischenspeicher-Unterbelegungsfunktion, wenn Sie erwarten, dass mehrere Zuordnungen mit Zuordnungsaufhebungen mit einem kleinen Satz von Blockgrößen für eine Reihe von Threads durchsetzt werden. Die Unterbelegungsfunktion ist eine Zwischenspeicherebene über dem C-Laufzeitheap. Die Concurrency Runtime erstellt eine Unterbelegungsfunktion pro virtuellem Prozessor in einem Planer sowie eine Unterbelegungsfunktion pro Thread, der von der Anwendung erstellt wurde und die Belegungsfunktionen verwendet.

Sobald Sie einen Cache mit einem Block bestimmter Größe aufgebaut haben, sind Reservierungen und Freigaben ohne Sperren und ohne das Ausführen von Arbeitsspeicherbarrieren möglich. Wenn der Cache in jeder Unterbelegungsfunktion für eine Blockgröße leer ist, werden Zuordnungen vom Heap gemacht, und wenn der Cache eine bestimmte Größe für eine Blockgröße erreicht hat, sind die Blöcke für den C-Laufzeitheap frei.

Wenn die Anwendung viel Arbeitsspeicher benötigt, stellen Sie möglicherweise fest, dass Sie früher als erwartet nicht mehr genügend Arbeitsspeicher zur Verfügung haben, wenn Sie die Unterbelegungsfunktion für die Zwischenspeicherung verwenden. Dies ist, da in einer Unterbelegungsfunktion zwischengespeicherte Blöcke einander nicht zur Verfügung stehen und es möglicherweise große in Unterbelegungsfunktionen zwischengespeicherte Arbeitsspeicher gibt, für die ein bestimmter Thread an einem bestimmten Punkt keinen Zugriff hat.

Anforderungen

Header: concrt.h

Namespace: Concurrency

Siehe auch

Referenz

Concurrency-Namespace

Free-Funktion