malloc
| Definiert im Header <stdlib.h> |
||
| void *malloc( size_t size ); |
||
Allokiert size Bytes nicht initialisierten Speicher.
Wenn die Allokation erfolgreich ist, wird ein Zeiger zurückgegeben, der für jedes Objekt mit fundamentaler Ausrichtung geeignet ist.
Wenn size Null ist, ist das Verhalten von malloc implementierungsabhängig. Zum Beispiel kann ein Nullzeiger zurückgegeben werden. Alternativ kann ein Nicht-Null-Zeiger zurückgegeben werden; ein solcher Zeiger sollte jedoch nicht dereferenziert werden und sollte an free übergeben werden, um Speicherlecks zu vermeiden.
|
Ein vorheriger Aufruf von free, free_sized und free_aligned_sized(seit C23) oder realloc, der einen Speicherbereich freigibt, *synchronisiert sich mit* einem Aufruf von |
(seit C11) |
Inhalt |
[edit] Parameter
| size | - | Anzahl der zuzuweisenden Bytes |
[edit] Rückgabewert
Bei Erfolg wird der Zeiger auf den Anfang des neu allokierten Speichers zurückgegeben. Um Speicherlecks zu vermeiden, muss der zurückgegebene Zeiger mit free() oder realloc() freigegeben werden.
Bei einem Fehler wird ein Nullzeiger zurückgegeben.
[edit] Beispiel
#include <stdio.h> #include <stdlib.h> int main(void) { int *p1 = malloc(4*sizeof(int)); // allocates enough for an array of 4 int int *p2 = malloc(sizeof(int[4])); // same, naming the type directly int *p3 = malloc(4*sizeof *p3); // same, without repeating the type name if(p1) { for(int n=0; n<4; ++n) // populate the array p1[n] = n*n; for(int n=0; n<4; ++n) // print it back out printf("p1[%d] == %d\n", n, p1[n]); } free(p1); free(p2); free(p3); }
Ausgabe
p1[0] == 0 p1[1] == 1 p1[2] == 4 p1[3] == 9
[edit] Referenzen
- C17-Standard (ISO/IEC 9899:2018)
- 7.22.3.4 Die Funktion malloc (S. 254)
- C11-Standard (ISO/IEC 9899:2011)
- 7.22.3.4 Die Funktion malloc (S. 349)
- C99-Standard (ISO/IEC 9899:1999)
- 7.20.3.3 Die Funktion malloc (S. 314)
- C89/C90-Standard (ISO/IEC 9899:1990)
- 4.10.3.3 Die Funktion malloc
[edit] Siehe auch
| dealloziert zuvor allozierten Speicher (Funktion) | |
| C++ Dokumentation für malloc
| |