Probleme bei Strukturen



  • Hallo

    Ja, gerade deswegen ist es höchste Zeit es zu lernen 😃 .

    Mfg.
    way



  • worsorrr schrieb:

    ich würde verstehen: Sammlung->sheep.nr.. jedoch funktioniert das nicht

    sheep ist kein Schaf, sondern ein Array von 100 Schafen. Für den Zugriff auf ein bestimmtes Element des Arrays brauchst du also einen Index. Und der steht eben in eckigen Klammern.

    way schrieb:

    Wenn du mit der Entwicklungsumgebung Visual Studio C/C++ arbeitest, solltest du die Strukturen vor unnützer und fehleranfälliger (und automatischer) Strukturenoptimierung schützen. Das kann in bestimmten Fällen schonmal in die Hose gehen.

    Warum nur bei Visual C++?
    Warum unnütz?
    Warum fehleranfällig?
    Was sind das für "bestimmte Fälle"?

    Ich vermute, du bist nur irgendwann mit nichtstandardkonformen Gefrickel auf die Nase gefallen, und zufällig ließ sich das durch Unterbinden des Strukturalignment "fixen".



  • way schrieb:

    Wenn du mit der Entwicklungsumgebung Visual Studio C/C++ arbeitest, solltest du die Strukturen vor unnützer und fehleranfälliger (und automatischer) Strukturenoptimierung schützen.

    nö, du darfst structs nur nicht wie char-arrays behandeln.
    🙂



  • Hallo

    Was hast du für ein Problem?

    Mfg.
    way



  • way schrieb:

    Was hast du für ein Problem?

    Falls du mich meinst: Beantworte meine Fragen, dann beantworte ich deine 😉



  • Hallo

    Warum nur bei Visual C++?

    Weil ich es persönlich nur bei Visual Studio C++ erlebt habe.

    Warum unnütz?

    Weil es in den meisten Fällen nicht gewollt ist.

    Was sind das für "bestimmte Fälle"?

    Bestimmte Fälle in denen man mit den Strukturen arbeitet?

    Das letzte stimmt auch, dadurch bin ich auf die Optimierung aufmerksam geworden. Ist das jetzt schlimm? oO

    Mfg.
    way



  • way schrieb:

    Weil ich es persönlich nur bei Visual Studio C++ erlebt habe.

    FYI: Viele Compiler machen das.

    way schrieb:

    Weil es in den meisten Fällen nicht gewollt ist.

    Weißt du überhaupt, welchem Zweck es dient?

    way schrieb:

    Bestimmte Fälle in denen man mit den Strukturen arbeitet?

    Also kannst du das nicht näher beschreiben?



  • way schrieb:

    Warum unnütz?

    Weil es in den meisten Fällen nicht gewollt ist.

    schau mal da: http://en.wikipedia.org/wiki/Packed
    🙂



  • Hallo

    Möchtest du dich profilieren oder warum brauchst du eine Erklärung?

    Naja, ich rechtfertige mich trotzdem mal. Die struct's werden standardmäßig nicht unter 32 Bytes optimiert (oder waren es 24?). Falls die Byteanzahl über 32 ist, werden weitere 24 hinzugefügt. Der Memory Cache (CPU) ist optimiert um eine größere Byteanzahl als einen Byte zu kopieren.

    Mfg.
    way



  • way schrieb:

    Möchtest du dich profilieren oder warum brauchst du eine Erklärung?

    schlechte laune oder was?
    🙂



  • Hallo

    Bin auf der Arbeit, jooo...

    Mfg.
    way



  • way schrieb:

    Bin auf der Arbeit, jooo...

    na, ich hoffe du musst bei deiner arbeit keinen C-code schreiben.
    (nicht ernst nehmen).
    🙂



  • Hallo

    Nä, Fließbandarbeiter (;

    Mfg.
    way



  • way schrieb:

    Die struct's werden standardmäßig nicht unter 32 Bytes optimiert (oder waren es 24?). Falls die Byteanzahl über 32 ist, werden weitere 24 hinzugefügt. Der Memory Cache (CPU) ist optimiert um eine größere Byteanzahl als einen Byte zu kopieren.

    Davon ab dass das allenfalls grob umrissen ist, war die Frage doch eigentlich, warum dies "meist ungewollt" ist.

    Nein, wir möchten uns nicht profilieren, wir (Mehrzahl) haben nur den Eindruck, dass Du nicht so recht verstehst, warum und wann ein Compiler überhaupt packt. Das kann aber nicht der Grund sein, Packing grundsätzlich abzuschalten.

    EDIT:
    Profilieren möchte sich m.E. eher, wer unbegründet empfiehlt "unnütze und fehleranfällige Strukturenoptimierung" zu deaktivieren.



  • _matze schrieb:

    2. In ANSI-C darf man die Rückgabe von malloc nicht casten

    Wieso sollte man das nicht dürfen? Ist doch völlig Standardkonform. Ob es allerdings schön ist, ist eine andere Sache.


Anmelden zum Antworten