Freigeben über


_freea

Gibt gemeinsam oder gibt einen Speicherblock frei.

void _freea( 
   void *memblock 
);

Parameter

  • memblock
    Zuvor reservierter Speicherblock freigegeben werden sollen.

Rückgabewert

Keine.

Hinweise

Die _freeaFunktion gibt einen Speicherblock frei ()memblockvorher durch einen Aufruf von _mallocazugeordnet wurde._freea Überprüft, ob der Arbeitsspeicher auf dem Heap oder dem Stapel belegt wurde.Wenn es auf dem Stapel reserviert wurde, bleibt _freea nichts.Wenn es auf dem Heap reserviert wurde, ist die Anzahl der freigegebenen Bytes und der Anzahl der angeforderten Bytes sein, als der Block zugeordnet wurde.Wenn memblockNULList, wird der Zeiger ignoriert und _freea wird sofort zurückgegeben.Der Versuch, einen ungültigen Zeiger (einen Zeiger auf einen Speicherblock, der nicht durch _mallocabelegt wurde) freizugeben folgenden Anforderungen beeinflussen, und Zuordnungen können Fehler verursacht hat.

_freeafree ruft intern auf, wenn es findet, dass der Arbeitsspeicher auf dem Heap zugeordnet ist.Ob der Arbeitsspeicher auf dem Heap oder dem Stapel ist, wird von einem Marker bestimmt, der an der Adresse im Speicher direkt vor dem reservierten Speicher abgelegt wird.

Wenn ein Fehler auftritt, wenn er den Speicher freigibt, ist errno mit Informationen aus dem Betriebssystem auf der Art des Fehlers festgelegt.Weitere Informationen finden Sie unter errno, _doserrno, _sys_errlist und _sys_nerr.

Nachdem ein Speicherblock freigegeben wurde, minimiert _heapmin die Menge des freien Arbeitsspeichers auf dem Heap, indem Sie die nicht verwendeten Bereiche verschmilzt und sie wieder an das Betriebssystem freigegeben wird.Freigegebener Speicher, der nicht für das Betriebssystem freigegeben wird, wird das Freigeben Pool wiederhergestellt und zur Zuordnung wieder verfügbar.

Ein Aufruf von _freea muss alle Aufrufe _mallocaVerfügung.Es kann auch ein Fehler, um Arbeitsspeicher auf demselben _freea zweimal aufruft.Wenn die Anwendung mit einer Debugversion der C-Laufzeitbibliotheken verknüpft ist, insbesondere bei aktiviertem _malloc_dbg-Funktionen durch die Definition von _CRTDBG_MAP_ALLOC, ist es einfacher, fehlende oder doppelte _freeaAufrufe zu suchen.Weitere Informationen darüber, wie der Heap während des Debuggens Prozesses verwaltet wird, finden Sie unter Der CRT-Debugheap.

_freea ist als __declspec(noalias)und bedeutet, dass die Funktion nicht garantiert globale Variablen zu ändern.Weitere Informationen finden Sie unter noalias.

Anforderungen

Funktion

Erforderlicher Header

_freea

<stdlib.h> und <malloc.h>

Weitere Informationen finden Sie unter Kompatibilität Kompatibilität in der Einführung.

Beispiel

Weitere Informationen finden Sie im Beispiel für _malloca.

.NET Framework-Entsprechung

Nicht zutreffend. Um die Standard-C-Funktion aufzurufen, verwenden Sie PInvoke. Weitere Informationen finden Sie unter Plattformaufruf-Beispiele.

Siehe auch

Referenz

Speicherbelegung

_malloca

calloc

malloc

_malloc_dbg

realloc

_free_dbg

_heapmin