Allokieren in PASCAL ?

Tutorials.at
Verfügbare Informationen zu "Allokieren in PASCAL ?"

  • Qualität des Beitrags: 0 Sterne
  • Beteiligte Poster: exbs - Dragorad
  • Forum: Tutorials.at
  • Forenbeschreibung: Programmierforum
  • aus dem Unterforum: Pascal
  • Antworten: 3
  • Forum gestartet am: Mittwoch 19.04.2006
  • Sprache: deutsch
  • Link zum Originaltopic: Allokieren in PASCAL ?
  • Letzte Antwort: vor 17 Jahren, 1 Monat, 28 Tagen, 23 Stunden, 43 Minuten
  • Alle Beiträge und Antworten zu "Allokieren in PASCAL ?"

    Re: Allokieren in PASCAL ?

    exbs - 19.02.2007, 18:15

    Allokieren in PASCAL ?
    Hi ... ich hab da mal ne frage ;).

    Da ich mich in meinem info unterricht mit PASCAL beschäfftiegen muss, wird ich gern wissen, ob und wenn ja wie, man in PASCAL dynamisch speicher bereitstellt ? ist es überhaupt möglich während der laufzeit speicher zu allokieren, wie das in c geht ?

    Ich habe net ein bisschen gegoogelt und bin unter anderem auch auf diese lösung gestößen ... die hier ... es wäre net, wenn mir die hier jemand genauer erläutern könnte.

    danke ...



    Re: Allokieren in PASCAL ?

    exbs - 21.02.2007, 22:57


    Ist das echt sooo schwer ;) ...

    >> mir würde auch ein ... "es geht net reichen" ;) ... :P



    Re: Allokieren in PASCAL ?

    Dragorad - 22.02.2007, 11:06


    Ich hab' hier mal ein Zitat von Tutorials.at, vielleicht hilft dir das weiter ...

    Zitat: 5.3; Dynamische Speicherplatzzuweisung:

    Das Kapitel Zeiger ist noch nicht abgeschlossen. Die dynamische Speicherplatzzuweisung ist ein praktisches Anwendungsbeispiel, wofür Zeiger benötigt werden. Das Prinzip beruht darauf, Speicherplatz zu reservieren wenn dieser benötigt wird und wieder freizugeben wenn er nicht mehr gebraucht wird. Der Speicherplatz globaler Variablen wird reserviert, noch bevor der Hauptanweisungsblock ausgeführt wird und wieder freigegeben, wenn das Programm beendet wird. Der Speicherplatz lokaler Variablen wird mit Eintritt in die Funktion/Prozedur reserviert und beim Austritt aus dieser wieder freigegeben. Der Speicherplatz einer dynamische Variable (bisher haben wir immer mit statischen Variablen gearbeitet) kann nach Belieben alloziiert (reserviert) bzw. freigegeben werden. Damit können auch größere Datenmengen im Arbeitsspeicher untergebracht werden, (normalerweise ist unter DOS nur der Zugriff auf 640 KB Speicher möglich) denn so kann der Arbeitsspeicher besser ausgenützt werden.

    Eine dynamische Variable wird deklariert wie ein Zeiger. Wenn die dynamische Variable benötigt wird, muss Speicherplatz mit der Prozedur New oder GetMem reserviert werden. Wird die dynamische Variable nicht mehr benötigt, kann sie mit Dispose oder FreeMem wieder freigegeben werden.

    Die Verwendung von New sieht folgendermaßen aus:

    New (Variable);

    Wieviel Speicherplatz reserviert werden muss, wird automatisch festgestellt. Darum müssen Sie sich also nicht kümmern. Anders ist das allerdings bei GetMem. Hier müssen Sie explizit angeben, wieviel Speicherplatz (Angabe in Bytes) reserviert werden soll.

    GetMem (Variable, Anzahl_Bytes);

    Sie sprechen die dynamische Variable folgendermaßen an, wenn Sie auf die Daten zugreifen möchten:

    ... Variable^ ...

    Das Freigeben des Speicherplatzes erfolgt mit Dispose oder FreeMem. Mit Dispose kann Speicherplatz ebenso einfach wieder freigegeben werden, wie er auch reserviert wurde:

    Dispose (Variable);

    Darum, wieviele Bytes freizugeben sind, müssen Sie sich auch hier nicht kümmern. Bei FreeMem ist das allerdings der Fall:

    FreeMem (Variable, Anzahl_Bytes);

    PROGRAM Dynamische_Variablen;
    USES Crt;
    VAR dynvar: ^Integer;
    BEGIN
    New (dynvar);
    dynvar^ := 1000;
    Writeln (dynvar^);
    Dispose (dynvar);
    ReadKey;
    END.

    Die Variable dynvar wurde vom Typ ^Integer deklariert und soll später als dynamische Variable verwendet werden. Mit New wird der Speicherplatz für diese Variable reserviert. Nun ist es möglich auf sie zuzugreifen und den Wert 1000 zuzuweisen. Dieser wird zur Überprüfung auf dem Bildschirm ausgegeben. Abschließend werden die (lächerlichen) 2 Bytes, die Integer benötigt wieder freigegeben. Prinzipiell wäre es in diesem Beispiel egal gewesen, hätten wir eine statische Variable verwendet, denn es wird kein besonders großer Speicherplatz benötigt. Die dynamische Speicherplatzzuweisung macht allerdings beispielsweise bei großen Arrays (sagen wir einmal z.B. 10000 Char-Elemente und mehr) Sinn. Wie üblich soll das Beispiel die Verwendung des Neuen zeigen und nicht mit Unnötigem verwirren.



    Mit folgendem Code, können Sie den Beitrag ganz bequem auf ihrer Homepage verlinken



    Weitere Beiträge aus dem Forum Tutorials.at

    Wie...? - gepostet von Schubl am Samstag 13.05.2006
    Umrechner Arabische in Römische Zahlen - gepostet von Walgo am Donnerstag 19.07.2007
    --- IDE --- (unbedingt lesen) - gepostet von X am Sonntag 10.09.2006
    Schaltjahre! - gepostet von wirthi am Sonntag 04.11.2007
    Mischen von Einträgen einer doppelt verketteten Liste - gepostet von Zuul am Mittwoch 21.03.2007
    escape sequenz in devcpp - gepostet von Elch am Donnerstag 09.08.2007
    Welche Programmiersprache? - gepostet von The Dust am Sonntag 24.06.2007
    Allokieren in PASCAL ? - gepostet von exbs am Montag 19.02.2007
    3D-Grafik/Modelling/Animation - gepostet von Dirty Oerty am Dienstag 08.05.2007



    Ähnliche Beiträge wie "Allokieren in PASCAL ?"

    Mercier, Pascal - Lea - Krümel (Montag 30.07.2007)
    Pascal - Anonymous (Mittwoch 24.11.2004)
    Battlefield 3 - Firestarter (Samstag 05.03.2011)
    Pascal - Nina (Mittwoch 26.09.2007)
    07.05.05 The Fire - Pascal F.E.O.S. @ CAT Club - rOn dE (Montag 02.05.2005)
    Pascal - katharina (Freitag 19.08.2005)
    Fransa'da dogdu Besiktasli oldu Pascal Nouma - ladybjk (Dienstag 14.08.2007)
    Pascal Seidel - Pascal (Donnerstag 16.08.2007)
    Pascal Nouma Icin... - close (Freitag 08.04.2005)
    stilvoll (pascal) - Butterfly_Effect (Donnerstag 02.06.2005)