malloc
Belegt Speicher blockiert.
void *malloc(
size_t size
);
Parameter
- size
Zuzuordnen Bytes.
Rückgabewert
malloc gibt einen void-Zeiger auf den reservierten Speicherplatz oder NULL zurück, wenn es nicht genügend Arbeitsspeicher vorhanden sind.Um einen Zeiger auf einen anderen Typ als voidzurückzugeben, verwenden Sie eine Typumwandlung im Rückgabewert.Der Speicherplatz, der durch den Rückgabewert verweist, ist für Speicher entsprechend Objekt eines beliebigen Typs ausgerichtet werden soll.Wenn Größe 0 (null) ist, wird die Länge 0 malloc ein Element im Heap zu und gibt einen gültigen Zeiger auf dieses Element zurück.Überprüfen Sie immer die Rückgabe von malloc, auch wenn der angeforderte Arbeitsspeicher klein ist.
Hinweise
Die malloc-Funktion ordnet einen Speicherblock mindestens size Bytes.Der Block ist möglicherweise größer als size aufgrund von Bytes Speicherplatz, das Ausrichtungs- und Verwalten von Informationen erforderlich ist.
malloc legt diesen fest ENOMEM zu errno , wenn eine Speicherbelegung fehlschlägt, oder wenn der angeforderte Arbeitsspeicher _HEAP_MAXREQüberschreitet.Weitere Informationen zu diesem und anderen Fehlercodes finden Sie unter errno, _doserrno, _sys_errlist und _sys_nerr.
Der Startcode verwendet malloc , um Speicher für _environ, envpund argv-Variablen zuzuordnen.Die folgenden Features und ihre Entsprechungen rufen auch mallocBreitzeichen dargestellt:
|
|||
|
Die Funktion C++ _set_new_mode legt den neuen Handler für mallocModus fest.Der neue Modus gibt an, ob die Handler auf Fehler, malloc , die neue Handler routine legen Sie z. B. durch _set_new_handleraufzurufen ist.Standardmäßig ruft malloc nicht die neuen Handler routine bei Bindungsfehlern Speicher belegen.Sie können dieses Standardverhalten überschreiben, dass beim malloc Speicher belegen, kann nicht malloc die neue Handler routine genauso aufgerufen wird, dass der Operator new , wenn sie aus demselben Grund fehlschlägt.Um den Standardwert überschreiben, rufen
_set_new_mode(1)
früh im Programm oder eine Verknüpfung mit NEWMODE.OBJ (siehe Link-Optionen).
Wenn die Anwendung mit einer Debugversion der C-Laufzeitbibliotheken verknüpft ist, wird malloc zu _malloc_dbgauf.Weitere Informationen darüber, wie der Heap während des Debuggens Prozesses verwaltet wird, finden Sie unter Der CRT-Debugheap.
malloc ist als __declspec(noalias) und __declspec(restrict)und bedeutet, dass die Funktion nicht garantiert globale Variablen ändern und dass der zurückgegebene Zeiger nicht mit einem Alias versehene.Weitere Informationen finden Sie unter noalias und Beschränken Sie ein.
Anforderungen
Routine |
Erforderlicher Header |
---|---|
malloc |
<stdlib.h> und <malloc.h> |
Um Kompatibilität zusätzlichen Informationen finden Sie unter Kompatibilität in der Einführung.
Bibliotheken
Alle Versionen Cs.
Beispiel
// crt_malloc.c
// This program allocates memory with
// malloc, then frees the memory with free.
#include <stdlib.h> // For _MAX_PATH definition
#include <stdio.h>
#include <malloc.h>
int main( void )
{
char *string;
// Allocate space for a path name
string = malloc( _MAX_PATH );
// In a C++ file, explicitly cast malloc's return. For example,
// string = (char *)malloc( _MAX_PATH );
if( string == NULL )
printf( "Insufficient memory available\n" );
else
{
printf( "Memory space allocated for path name\n" );
free( string );
printf( "Memory freed\n" );
}
}
.NET Framework-Entsprechung
Nicht zutreffend. Um die Standard-C-Funktion aufrufen, verwenden Sie PInvoke. Weitere Informationen finden Sie unter Plattformaufruf-Beispiele.