malloc frage



  • ich habe bis jetzt malloc immer als sinnlos angesehen...

    wann braucht man das wirklich?



  • Zum Beispiel zur dynamischen Speicherreservierung. Wenn du Speicher in einer Größe benötigst die zur Zeit des Compile-Vorgangs noch nicht bekannt ist.

    Mehr dazu im ANSI-C-Forum.

    MfG SideWinder



  • Dieser Thread wurde von Moderator/in SideWinder aus dem Forum DOS und Win32-Konsole in das Forum ANSI C verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • hmhm macht das nicht windows schon?



  • malloc (Speicherallokierung) wird verwendet, um dynamisch (h.h. zur Programmlaufzeit) Speicherplatz zur Verfügung zu stellen. Mögliche Anwendungsfälle sind:

    Lesen von Datensätzen mit unbekannter Länge.
    Lesen einer unbekannten Anzahl von Datensätzen.
    Linked lists.
    Eine einfache Variante zum Reservieren von Speicherplatz könnte so aussehen. Beachten Sie, daß die Reservierung statisch (d.h. zur Compilezeit) erfolgt:

    main()
    {
    char string[1000];

    strcpy (string, "Some text");
    }

    Diese Variante hat Nachteile:

    Wenn die Zeichenkette kürzer als 1000 Zeichen ist, wird Speicherplatz verschwendet.
    Wenn die Zeichenkette länger als 1000 Zeichen ist, stürzt das Programm ab.
    Die 1000 Byte werden während der gesamtem Programmlaufzeit gebunden. Bei einer nur selten genutzten Variablen wäre das eine Ressourcenverschwendung.
    malloc ermöglicht es, eine variable Menge an Speicherplatz zu binden. Mit der Funktion free kann der Speicherplatz jederzeit wieder freigegeben werden..



  • imo2 schrieb:

    hmhm macht das nicht windows schon?

    Nein.

    zubaasa schrieb:

    Wenn die Zeichenkette länger als 1000 Zeichen ist, [...]

    dann ist das Verhalten undefiniert.

    zubaasa schrieb:

    Die 1000 Byte werden während der gesamtem Programmlaufzeit gebunden.

    Nicht ganz. Sondern nur solange, bis der Gültigkeitsbereich verlassen wird.


Anmelden zum Antworten