Freigeben über


_freea

Gibt frei oder gibt einen Speicherblock freigegeben.

void _freea( 
   void *memblock 
);

Parameter

  • memblock
    Zuvor gemeinsam genutzt reservierter Speicherblock.

Rückgabewert

Keine.

Hinweise

Die _freea - Funktion wird ein Speicherblock freigegeben (memblock) der zuvor durch einen Aufruf von _malloca zugeordnet wurde. _freea überprüft, um festzustellen, ob der Speicher auf dem Heap oder dem Stapel zugeordnet wurde. Wenn er auf dem Stapel zugeordnet wurde, hat _freea keine Auswirkungen. Wenn er auf dem Heap zugeordnet wurde, ist die Anzahl der Bytes freigegebenen zur Anzahl Bytes angefordert äquivalent, als Block zugeordnet wurde. Wenn memblockNULL ist, wird der Zeiger ignoriert und _freea wird sofort zurückgegeben. Der Versuch, einen ungültigen Zeiger (einen Zeiger auf einen Speicherblock, der von _malloca nicht zugeordnet wurde) freizugeben, folgende Zuordnungsanforderungen beeinflussen und verursacht möglicherweise Fehler.

_freea ruft free intern auf, wenn es ermittelt, dass der Speicher auf dem Heap reserviert wird. Ob der Speicher auf dem Heap oder Stapel befindet, wird von einem Markierung bestimmt, der in den Speicher an der Adresse direkt vor den reservierten Speicher abgelegt wird.

Wenn bei der Freigabe des Speichers ein Fehler auftritt, wird errno mit Informationen des Betriebssystems über die Art des Fehlers angegeben. Weitere Informationen finden Sie unter errno, _doserrno, _sys_errlist und _sys_nerr.

Nachdem ein Speicherblock freigegeben wurde, minimiert _heapmin und der freie Arbeitsspeicher im Heap, indem die nicht verwendeten Bereiche Außerdem werden und sie wieder für das Betriebssystem frei. Freigegebener Arbeitsspeicher, der nicht dem Betriebssystem verworfen wird, wird z freien Pool wiederhergestellt und zur Zuordnung wieder verfügbar.

Ein Aufruf von _freea muss alle Aufrufe von _malloca dargestellt. Es ist auch ein Fehler, um _freea auf den gleichen Arbeitsspeicher zweimal aufruft. Wenn die Anwendung mit einer Debugversion der C-Laufzeitbibliotheken verknüpft wird, insbesondere mit _malloc_dbg-Funktionen aktiviert durch Definition von _CRTDBG_MAP_ALLOC, ist es einfacher, fehlende oder duplizierte Aufrufe _freea zu suchen. Weitere Informationen dazu, wie der Heap während des Debuggingsprozesses verwaltet wird, finden Sie unter Der CRT-Debugheap.

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

Anforderungen

Funktion

Erforderlicher Header

_freea

<stdlib.h> und <malloc.h>

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

Beispiel

Ein Beispiel hierfür finden Sie unter _malloca.

.NET Framework-Entsprechung

Nicht zutreffend. Mit PInvoke rufen Sie die Standard-C-Funktion auf. Weitere Informationen finden Sie unter Beispiele für Plattformaufrufe.

Siehe auch

Referenz

Speicherbelegung

_malloca

calloc

malloc

_malloc_dbg

realloc

_free_dbg

_heapmin