Unterschied zwischen Debug und Release


  • Administrator

    Grüsse,

    Gibt es irgendwo eine Auflistung, was denn nun genau alles ausgelassen wird, wenn man in Release compiliert gegenüber dem wenn man in Debug compiliert?

    Bei mir werden nämlich plötzlich Dinge nicht mehr gezeichnet, wenn ich mein Programm per Release starte. Zudem habe ich das Gefühl, dass Konstruktoren Code ausgelassen wird. Nämlich Code wie diesen hier:

    Beispielklasse::Beispielfunktion(...)
        : m_nInteger(0)
        , m_Tabelle()
        , m_fFloat(1)
    {
        // usw.
    }
    

    Dann scheint nämlich bei mir m_nInteger nicht mit 0 bzw. m_fFloat mit 1 initialisiert zu werden. usw.
    Während das in den geschweiften Klammern anscheind ausgeführt wird. Oder täusch ich mich da?

    Aber so eine Auflistung wäre noch ganz nett.
    Danke im voraus.

    Grüssli



  • Die beiden Member müssen auch im Release so initialisiert sein.
    Überzeuge dich mit einem

    if (m_nInteger != 0) MessageBox(NULL, "Peng", NULL, MB_OK);
    

    Wenn du Speicher bestellst, z.B. mit char memo[512];
    dann ist der im Debug meist (immer?) mit c0 initialisiert.
    (Damit man das merkt.)

    Je nach VS Version wird im Debug zur Laufzeit aufgepasst, dass man z.B. uninitialisierte Pointer nicht verwendet.
    assert funktioniert nur im Debug
    DEBUG ist definiert für den Präprozessor


Anmelden zum Antworten