malloc

/* malloc.c */
/* bei proggen.org gefunden */
#include <stdio.h>
#include <stdlib.h>/* malloc, free */
int main( void )
{
  char * buffer;
  int i;
  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;
}

Das folgende Video erklärt gut malloc, calloc und realloc:


Wenn man einmal die Grenze eines Datentyps überschreitet, dann gibt es immer recht unvorhersehbare Ergebnisse. Oder es gibt sinnlose Resultate.