Reserviert Speicher und gibt die Speicheradresse darauf zurück

Beschreibung

void* malloc(size_t bytes);

Reserviert Speicher der Größe bytes und gibt einen Zeiger auf diesen zurück. Im Gegensatz zu calloc setzt malloc den Speicher beim Reservieren nicht auf null.

Rückgabewerte

Gibt bei Erfolg einen Void-Zeiger auf den reservierten Speicher zurück, sonst den Nullzeiger (void*) NULL.

Beispiele

int *array = (int *) malloc(sizeof(int)*100);
 
array[0] = 5;
#include <stdlib.h>
 
int *zeiger;
malloc(sizeof(int));
 
// Ganz normal damit arbeiten
*zeiger = 5;

Anwendungsbeispiel

int main() 
{  
    struct person *pdaten;  
    int pNr,f;  
    
    scanf(“%d",&pNr);  
    
    pdaten = (struct person *)malloc(sizeof(struct person) * pNr);  
    
    for(f=0;f<pNr;f++)
        scanf(“%s", pdaten[f].Vorname);  
    
    return 0;  
}

Wissenswert

  • Da ein void-Zeiger zurückgegeben wird, muss eine Umwandlung in richtigen Zeigertyp erfolgen:
    (int*)malloc(sizeof(int))
  • Am Schluss sollte der Speicher wieder mit free freigeben werden.
  • Es sollte überprüft werden, ob malloc nicht einen Nullpointer geliefert hat, also keinen Speicher mehr reservieren konnte