um 4 Byte verschobene Zuweisungen



  • Hallo,

    ich habe ein seltsames Problem: ich habe in einer Klasse Variablen deklariert zB:

    class test
    {
      Typ1 var1;
      Typ1 var2;
    }
    

    Sagen wir Typ1 hat 8 Byte.

    Im Konstruktor gibt es folgende Zuweisungen:
    var2=NULL; //zuweisung1
    var1=NULL;

    Wenn ich jetzt debugge und mir vor einer Zuweisung die Variablen-Inhalte anschaue sehen sie so aus:
    var1=cdcdcdcdcdcdcdcd
    var2=cdcdcdcdcdcdcdcd
    nach zuweisung1 sehen die werte so aus:
    var1=0000cdcdcdcd
    var2=cdcdcdcd0000

    Das heisst dann wohl, dass der Debugger andere Startadressen für die Variablen hat als in den Zuweisungen
    Wie kann so ein Verhalten auftreten? Hab ich vielleicht irgendwo im Code was zerschossen? 😕



  • je nach impl. ist NULL nicht einfach 0.
    Wenn Typ1 und 2 Pointertypen sind, ok.
    Sonst würde ich mal einen ordentliche initialisierung schreiben.

    Poste doch mal den orginal code.
    SImon



  • Habs gefunden:
    Habe für ein paar Structs das Padding auf 1 gestellt und es nicht wieder auf den Defaultwert zurückgesetzt. In der Hilfe steht ja dass das pragma pack nur Strukturen und Unions betrifft, aber es betrifft wohl auch die Ausrichtung von Klassen-Membervariablen im Speicher.
    Dachte schon ich hab die Software geschrottet 😮


Anmelden zum Antworten