Automatische Initialisierung von Variablen



  • Hallo zusammen,

    ich arbeite derzeit an einem C++ Projekt. Ein Kumpel von mir wollte jetzt an dem Projekt weiter arbeiten, bekommt jedoch eine Menge laufzeitfehler, da ich scheinbar vergessen habe, einige Member-Variablen zu initialisieren.
    Scheinbar werden die Variablen wie z.b. int bei mir auf "0" gesetzt und bei meinem Kumpel hingegen erhalten sie eben den Wert, der noch im Speicher steht.

    Man könnte es sich jetzt einfach machen und sich die Frage stellen, wo man diese Option aktivieren kann, damit es auch bei meinem Kumpel läuft, da ich es jedoch sauber halten möchte, möchte ich bei mir diese Funktion gerne deaktivieren. Aber ehrlich gesagt, ich weiß nicht wo man diese Option ausschalten kann. Kann mir da jemand helfen?

    MfG T.



  • Dieser Thread wurde von Moderator/in SeppJ aus dem Forum MFC (Visual C++) in das Forum C++ (alle ISO-Standards) verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • vielleicht hängt es damit zusammen: https://msdn.microsoft.com/en-us/library/jj161081.aspx


  • Mod

    Gibt es generell nicht. Das Programm wird bei dir funktioniert haben, weil du wahrscheinlich irgendeinen Debugmodus benutzt, der alles auf 0 setzt (und somit schön Fehler vertuscht, aber manche Debugger sind eben einfach doof). Dein Kumpel wird das Programm ganz normal ohne Debugging ausgeführt haben. Du solltest halt ein korrektes Programm schreiben, dass sich nicht darauf verlässt, dass die Anfangswerte der Variablen zufällig passen. Denn es ist quasi Zufall, welchen Wert eine uninitialisierte Variable hat.



  • @themerx
    Ich kenne keine solche Option.

    Allerdings gibt es Umstände wo Objekte - vom Standard garantiert - immer erst mit Nullbytes vollgeschrieben werden. Und zwar wenn du "statische" Objekte anlegst. Also global, namespace-scope oder statische Member. IIRC auch funktionslokale statische Variablen.

    Wenn du also mit solchen statischen Objekten getestet hast, dein Freund aber nicht, dann würde das die Sache erklären.
    In dem Fall würde ich dir gleich noch den Tip geben: verwende keine globalen/statischen Variablen. Ausser es geht nicht anders. Und es geht immer anders 😉


Anmelden zum Antworten