malloc
|
Definiert in Header
<stdlib.h>
|
||
|
void
*
malloc
(
size_t
size
)
;
|
||
Weist
size
Bytes nicht initialisierten Speichers zu.
Wenn die Allokation erfolgreich ist, gibt sie einen Zeiger zurück, der für jeden Objekttyp mit fundamentaler Ausrichtung geeignet ausgerichtet ist.
Wenn
size
null ist, ist das Verhalten von
malloc
implementierungsdefiniert. Beispielsweise kann ein Nullzeiger zurückgegeben werden. Alternativ kann ein Nicht-Null-Zeiger zurückgegeben werden; jedoch sollte ein solcher Zeiger 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 mit
einem Aufruf von
|
(seit C11) |
Inhaltsverzeichnis |
Parameter
| size | - | Anzahl der zu reservierenden Bytes |
Rückgabewert
Bei Erfolg gibt die Funktion einen Zeiger auf den Anfang des neu allokierten Speichers zurück. Um einen Speicherverlust zu vermeiden, muss der zurückgegebene Zeiger mit free() oder realloc() freigegeben werden.
Bei Fehler wird ein Nullzeiger zurückgegeben.
Beispiel
#include <stdio.h> #include <stdlib.h> int main(void) { int *p1 = malloc(4*sizeof(int)); // weist Speicher für ein Array von 4 int zu int *p2 = malloc(sizeof(int[4])); // dasselbe, mit direktem Typnamen int *p3 = malloc(4*sizeof *p3); // dasselbe, ohne Wiederholung des Typnamens if(p1) { for(int n=0; n<4; ++n) // füllt das Array p1[n] = n*n; for(int n=0; n<4; ++n) // gibt es zurück aus 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
Referenzen
- C17-Standard (ISO/IEC 9899:2018):
-
- 7.22.3.4 Die malloc-Funktion (S: 254)
- C11-Standard (ISO/IEC 9899:2011):
-
- 7.22.3.4 Die malloc-Funktion (S: 349)
- C99-Standard (ISO/IEC 9899:1999):
-
- 7.20.3.3 Die malloc-Funktion (S: 314)
- C89/C90 Standard (ISO/IEC 9899:1990):
-
- 4.10.3.3 Die malloc-Funktion
Siehe auch
|
gibt zuvor allokierten Speicher frei
(Funktion) |
|
|
C++ documentation
für
malloc
|
|