Brutolator: Speicherort

Hallo,

C
eine Variable a zeigt auf einen Speicherbereich. Wo wird eben diese Information abgespeichert? Und die übrige Programmlogik?

b

  1. Mahlzeit Brutolator,

    C

    Heißt das, dass es um die Programmiersprache "C" geht?

    eine Variable a zeigt auf einen Speicherbereich. Wo wird eben diese Information abgespeichert?

    Im Arbeitsspeicher.

    Und die übrige Programmlogik?

    Ebendort.

    MfG,
    EKKi

    --
    sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
    1. eine Variable a zeigt auf einen Speicherbereich. Wo wird eben diese Information abgespeichert?

      Im Arbeitsspeicher.

      Mit Sicherheit kann man nur sagen, sie wird zumindest auf dem Server von selfhtml.org gespeichert.

      SCNR

    2. Hallo Ekki

      Im Arbeitsspeicher.

      Und die übrige Programmlogik?

      Ebendort.

      Das ist schon klar. Anhand des Pointers a bekommen wir Information darüber, auf welchen Speicherbereich er verweist. In welchem Speicherbereich aber liegt diese Meta-Information? Kann man auf ihn auch zugreifen, oder geht das nur von aussen mit einem Metaprogramm? Und wann wird die Größe jenes Speicherbereiches festgelegt? Wohl beim Kompilieren?

      b

      1. hi,

        Das ist schon klar. Anhand des Pointers a bekommen wir Information darüber, auf welchen Speicherbereich er verweist. In welchem Speicherbereich aber liegt diese Meta-Information?

        Das Programm bekommt vom OS einen Stack zugewiesen.

        Kann man auf ihn auch zugreifen, oder geht das nur von aussen mit einem Metaprogramm?

        Je nach OS ist das auch von 'außen' möglich ;-)
        Stichwort: Stack-Overflow

        Und wann wird die Größe jenes Speicherbereiches festgelegt? Wohl beim Kompilieren?

        in C reservierst Du für Deine Vars einen Speicherbereich z.b. mit malloc. Das wird dann vom Compiler im Programmcode selbst festgeschrieben. Den Stack jedoch reserviert das OS.

        Hotti Simple
        (In Wirklichkeit ist das alles bestimmt ein bischen komplizierter...)

      2. Hi!

        Das ist schon klar. Anhand des Pointers a bekommen wir Information darüber, auf welchen Speicherbereich er verweist. In welchem Speicherbereich aber liegt diese Meta-Information?

        Nach dem Kompilieren in gar keinem. Der Compiler erzeugt Code, der direkt auf den Speicherbereich zugreift. Es sei denn, der Compiler erzeugt zusätzlichen Code oder Debug-Informationen, mit dem/denen die Speicherstelle wieder a zugeordnet werden kann.

        Lo!

        1. Hi,

          In welchem Speicherbereich aber liegt diese Meta-Information?

          Nach dem Kompilieren in gar keinem.

          ach, klar. Hast recht.

      3. Hi,

        Dein Programmcode liegt im Code-Segment.

        In welchem Speicherbereich aber liegt diese Meta-Information?

        Deine Variablen liegen dort wo sie definiert werden, entweder auf dem Stack oder Heap.

        »»Kann man auf ihn auch zugreifen, oder geht das nur von aussen mit einem Metaprogramm?

        Wie meinst Du das? Auf den Inhalt eines Datenbeireichs, den Du als Zeiger (also als Adresswert) deklariert hast, kannst Du genauso zugreifen wie auf jeden anderen auch. Ein Zugriff von Außen ist erstmal nicht so selbstverständlich möglich.

        Gruss
        Stefanie