Speicher und Strukturen



  • Hallo zusammen,

    stimmt es das Elemente von Strukturen im Speicher
    überhauptnicht zusammenhängen müssen?
    Ich habe im Moment genau das Problem. Und dieser Zustand
    versagt es mir die kompletten Daten via memcpy in
    bzw. aus der Struktur herauszukopieren.

    Kann man da etwas dagegen machen?
    Also den Compiler dazu zwingen die Strukturdaten
    auch im Speicher zusammenzuhalen.

    Hab schon (ohne Erfolg) bei MSDN und Google gesucht aber
    ich weiß nicht genau wonach ich wirklich suchen soll.
    Hoffe jemand von euch hat eine gute Idee.

    Bye Peter.



  • Ich weiß jetzt nicht, was du konkret mit "zusammenhängend" meinst. Aber es ist auf jeden Fall möglich, eine Struktur mit memcpy zu kopieren.
    Es kann sein, dass es in der Struktur Füllbytes gibt. Aber es kann z.B. nicht sein, dass eine völlig andere Variable in den Speicher einer Struktur mitreingemischt wird.



  • @Bashar,

    nein ganz so schlimm ist es nicht. In meinem Fall habe ich teilweise zwischen einzelnen Werten, wie du es meintest "Füllbytes". Also hängen nicht alle Variablen im Speicher direkt zusammen.
    Ich bekomme in meinem Projekt eine Datei mit den Daten für meine Struktur (jedoch ohne Füllbytes). Wenn ich die Daten nun komplett einlese kann ich diese
    dann nicht einfach in die Struktur kopieren.

    Ich muss nun also Wert für Wert einleses.
    Ist ziemlich aufwendig. Gibt es da eine bessere Möglichkeit.

    Bye Peter.



  • Im ANSI-Standard ist sowas nicht vorgesehen. Es kann aber sein, dass dein Compiler eine entsprechende Erweiterung anbietet, klapper mal die Manuals nach «gepackten Strukturen» ab.



  • @Bashar,

    danke für die schnelle Antwort.
    Ich werde gleich mal danach suchen.

    Bye Peter.



  • beim vc gibt es die einstellmöglichkeit für das "alignment of structures" (ist in der hilfe was darüber zu finden)

    z.b.:

    #pragma pack (push, 1)
    
    typedef struct
    {
       ........
    } data_t;
    
    #pragma pack (pop)
    

    damit wird das alignment auf 1 byte gesetzt und es sollte möglich sein die daten direkt aus dem file in die structure zu lesen



  • @bozo,

    supi...es funktioniert...danke.
    Was würde ich wohl ohne dieses Forum machen?
    ...eventuell nicht solange vorm Rechner hocken 🙂

    Bye Peter


Log in to reply