elemtvariablen in binarys speichern



  • lookias schrieb:

    ah okay danke

    kannst mir das mal erklaehren

    mich wurmt die frage was passiert wenn man sone speicherung fuer ne andre klasse verwendet

    oder allgemein woher weiss das programm ueberhaupt wie es die daten da in die elementvariablen holt

    mfg lookias

    ?? möchtest du die speicherbereiche erklärt haben, also stack, heap, register?
    oder meinst du das, dass durch das instanziieren ein objekt der klasse erstellt wird?

    in dem augentblick, wo du eine instanz der klasse in der main erstellst, wird ein objekt angelegt. entweder im stack oder im heap.
    hume sikkins sagte dazu mal, aus rohem speicher lebbare masse gemacht 😉



  • na wenn man die datei speichert dann werden doch alle zugehoerigen daten aus den elementvariablen in die datei gespeichert

    aber nach welchem prinzip funktioniert das?

    vlt nach reinfolge der deklaration also

    int itsWeight;
    long itsNumberDaysAlive;
    

    😕



  • mir ist nicht ganz klar, was du mit "datei" meinst..

    vielleicht mal aus der bibliothek ein schon altes buch leihen: reiner backer - programmiersprache assembler, der hat gut beschrieben, wie der quelltext zum .obj und dann zur ausführbaren datei gelinkt wird.
    im grunde google mal nach maschinensprache... und schau dir die begriffe compiler und linker mit aufgabenbereich an..

    oder wolltest du nicht so "tief" runter?



  • vlt nach reinfolge der deklaration also

    ja 🙂



  • Hier ist write (und auf der selben Seite auch read) erklärt.
    Mit

    fout.write((char*) &Bear,sizeof Bear);
    

    schreibst du also 8 Bytes (bei mir) von der Addresse von Bear angefangen. Hast du erwartet, dass in der Datei 50 und 100 als "lesbare" Zahlen stehen. Sie werden aber binär in die Datei geschrieben. Wenn du 50 in einer Textdatei lesen kannst, ist das etwas anderes als der Wert 50 in einer int Variable!
    (Hilft dir das nun weiter?)



  • jo

    dass man nicht 50 und 100 erwarten kann ja

    dass man das nach reihenfolge der deklaration speichert wars

    also ist sizeoff bear die summe der laengen der bytes der variablen der klasse bear?



  • ja aber die compiler richten die einzelnen variablen meistens an wortgrenzen aus so das z.B.

    int i; // 4 bytes
    char c; // 1 byte

    z.B. 8 byte ergeben. sizeof gibt dann aber auch 8 zurück.



  • weil int den groessten speicher alociert?

    also waers long int dann waerens hier 16 byte ja?



  • long ist auf 32-bit systemen das gleiche wie int. also 4 bytes.



  • ok aber nach dem system oder wie?


Anmelden zum Antworten