malloc()

malloc ist definiert in der stdlib, die in C über stdlib.h, bzw. in C++ über cstdlib eingebunden wird.

Funktion

malloc() reserviert einen Speicherblock in der angegebenen Größe. Der Zeiger auf das erste Byte wird zurückgegeben oder NULL, falls kein Speicher alloziiert werden konnte. Der Speicherblock, der vom Betriebssystem zur Verfügung gestellt wird, ist nicht initialisiert, so dass willkürliche Werte in diesem Bereich liegen.

Signatur

#include <stdlib.h>
void * malloc ( size_t size );

size: Größe des Speicherblocks, Angabe in Bytes.

Bemerkungen

Die Rückgabe ist ein Zeiger auf das erste Byte des zugeteilten Speicherblocks (oder NULL, falls kein Speicher zugeteilt wurde) und wird als Datentyp (void *) geliefert. In C wird (void *) auf jeden beliebigen Zeigerdatentyp implizit konvertiert. In C++ muss gecasted werden. Da viele C Programme mit C++ Compilern kompiliert werden, sollte der Typ inzwischen grundsätzlich als Cast vor den malloc()-Aufruf gesetzt werden.

Sobald Arbeitsspeicher nicht mehr benötigt wird, muss er mit der Funktion free() wieder freigegeben werden.

Beispiel

#include <stdio.h>
#include <stdlib.h>
 
int main( void )
{
  int i,n;
  char * buffer;
 
  printf ("Wieviele Sterne? ");
  scanf ("%d", &i);
 
  buffer = (char*) malloc( 1 + i );  // Am Ende des C-Strings wird zusätzlich 
                                     // ein Nullbyte als Endmarkierung benötigt
  if( buffer != NULL )
  {
    buffer[i]='\0';                  // Nullbyte setzen
 
    while( i-- )
      buffer[i] = '*';
 
    printf( "%s\n", buffer );
    free( buffer );                  // Wichtig! Speicher wieder freigeben
 
    return EXIT_SUCCESS;
  }
 
  return EXIT_FAILURE;
}

siehe auch