Ergebnis 1 bis 4 von 4
  1. #1
    Anfänger Avatar von cyber_gh0st
    Registriert seit
    25.04.2009
    Beiträge
    208

    Standard malloc free und Co

    hi ich habe ein Problem (wenn man das so nennen kann)
    unzwar weis ich was und wie die im Titel genannten Funktionen machen aber ich frage mich was das bringen soll also habe ich das doch nicht so verstanden... konnte mir einer mal bitte erklähren wozu das gut sein soll das man den Speicher reserviert is der nich sowieso schon reserviert???

    mfg cyber_gh0st


  2. #2
    W32.FunLove Avatar von Cr4ckEye
    Registriert seit
    19.11.2008
    Beiträge
    123

    Standard

    Moderne Systeme wie Linux und Windows haben (um mehrere Programme gleichzeitig starten zu können - nicht wie DOS dass nur einen Thread ausführen kann) Speicherverwaltungen die jedem Programm dem von ihm benötigten Speicher zuweist.
    Dadurch wird das überschreiben von Systemelementen oder der Eingriff in fremde Speicherbereiche verhindert.
    Sollte man das bewusst nutzen wollen muss man auf API funktionen und Hooks zurückgreifen.
    Dieser wird allerdings zum Programmstart reserviert und somit sind nur konstante größen möglich.

    z.b. char string[80]; <-- OK!

    int len = 8;
    char string[len]; <-- FEHLER!

    wenn man nun aber nicht weiß wiegroß der Speicher sein muss, (Usereingaben z.b.)
    muss man zusätzlichen Speicher im Heap reservieren.

    char* String = malloc(strlen(usereingabe) * sizeof(char)); <-- C/++
    char* String = new char[strlen(usereingabe)]; <-- Nur C++

    free() und delete/delete[] sind die Gegenfunktionen zu malloc und new, sie geben den Speicher wieder frei, die Werte bleiben allerdings im Speicher bestehen!

    MfG
    Geändert von Cr4ckEye (06.06.2009 um 21:03 Uhr)

  3. #3
    OpCodeKiddy Avatar von EBFE
    Registriert seit
    30.03.2009
    Beiträge
    442

    Standard

    konnte mir einer mal bitte erklähren wozu das gut sein soll das man den Speicher reserviert is der nich sowieso schon reserviert???
    könntest du mir bitte erklären, warum du meinst, dass der Speicher schon sowieso reserviert sein müsste ? Meinst du das OS weist schon beim Programmstart einfach mal einen 100mb Speicherblock zu ?
    Geändert von EBFE (06.06.2009 um 21:15 Uhr)

  4. #4
    Anfänger Avatar von cyber_gh0st
    Registriert seit
    25.04.2009
    Beiträge
    208

    Standard

    ah ok danke ich weis jetzt bescheid ihr habt mir echt weitergeholfen in meinem C "studium".


Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •