Speicherzugriffsfehler +std::cin



  • Hi,
    Ich habe etwas länger an einem Stück Quelltext gearbeitet.
    Habe ein paar std::cin >>a eingebaut.
    Er ist dann einwandfrei gelaufen.
    ich benutze a sonst nirgends im Quelltext.
    Nach dem ich die std::cins raus gemacht habe bekomme ich einen SPeicherzugriffsfehler.
    Woran kann sowasl liegen ??
    Gruß



  • Wahrscheinlich undefiniertes Verhalten. Zeig mal etwas Code.



  • Wahrscheinlich hast du deine Variable mit keinem Wert initialisiert oder sie nicht definiert.

    EDIT:
    Sorry, irgendwie Nexus' post überlesen... 😞



  • Hi,
    Also danke für Antworten.
    Aber Ich verwende die Variable a nirgends.
    Es ist auch erstaunlich, dass wenn ich die std::cout raus mache, das Programm wieder läuft.
    Die variable a habe ich im Übrigen ebenfalls raus geschmissen. Ich habe das cin nur verwendet, um die Ausgaben an der richtigen Stelle anschauen zu können.

    Gibt es eventuell eine größe einer FUnktion, welhce nicht überschritten werden darf ??

    Ich kann mir das Verhalten unmöglich erklären.
    Also code hier rein zu kopieren ist leider nicht möglich 🙂
    Die Funktion ist ziemlich groß und ich habe ja keine Ahnung welche Stelle.

    Momentan läuft es wieder, nach dem ich die std::couts raus gemacht habe (ein paar davon).
    Gruß



  • AlexXXx schrieb:

    Ich kann mir das Verhalten unmöglich erklären.

    Das hat es so an sich, wenn man undefiniertes Verhalten hat. Irgendwo (anders) scheint's nicht zu funktionieren, aber der wahre Grund ist dort oft nicht zu finden. Mehr kann man ohne Code nicht sagen.

    AlexXXx schrieb:

    Also code hier rein zu kopieren ist leider nicht möglich 🙂
    Die Funktion ist ziemlich groß und ich habe ja keine Ahnung welche Stelle.

    Langen Quellcode will hier auch keiner sehen. Es liegt an Dir, das Problem einzugrenzen, was zugegebenermaßen bei undefiniertem Verhalten nicht so leicht ist. "Die Funktion ist ziemlich groß" klingt schon mal schlecht. Es ist nicht immer möglich, aber man sollte versuchen, Funktionen klein zu halten, so dass man sie bestenfalls auf einer Bildschirmseite überblicken kann.

    AlexXXx schrieb:

    Momentan läuft es wieder, nach dem ich die std::couts raus gemacht habe (ein paar davon).

    Ich hoffe, Du bist ehrgeizig genug, es nicht dabei zu belassen. Irgendwo ist da der Wurm drin, entweder, weil Du etwas übersehen hast, oder weil Du etwas nicht/falsch verstehst und es nicht besser weißt. Im letzten Fall können Dir nur gute Lehrbücher und Feedback von anderen Programmierern helfen. Aber ohne Programmcode kein Feedback. 2-3 gute Lehrbücher sollten aber immer vorhanden sein.



  • Aber Ich verwende die Variable a nirgends.
    Es ist auch erstaunlich, dass wenn ich die std::cout raus mache, das Programm wieder läuft.
    Die variable a habe ich im Übrigen ebenfalls raus geschmissen. Ich habe das cin nur verwendet, um die Ausgaben an der richtigen Stelle anschauen zu können.

    ➡ undefiniertes Verhalten.

    Gibt es eventuell eine größe einer FUnktion, welhce nicht überschritten werden darf ??

    Nein. (Zumindest nicht Sprachbezogen)

    Ich kann mir das Verhalten unmöglich erklären.

    ➡ undefiniertes Verhalten.

    Das unerklärliche Verhalten von undefiniertem Code ist durchaus typisch. Manchmal gehts, manchmal nicht und wenn man eine völlig belanglose Zeile löscht gibts den Fehler nicht mehr. Hatte ich selbst auch mal und ich habe da ein paar Tage dran gedebuggt bist ich einen wilden Zeiger entdeckt habe.. Speicher wurde zerstört, aber Zeiger iwie nicht auf 0 gesetzt und weiterbenutzt. Also schau auch mal nach so etwas, weil das, denke ich öfters passiert.


Anmelden zum Antworten