read bzw. write - Fehlermeldungen



  • Hallo,

    unter WinXP verursacht mein C++-Programm (erstellt mit C++-Builder) immer wieder folgende Fehler:
    "Die Anweisung in ... verweist auf Speicher in ... Der Vorgan "read" konnte nicht aufdemSpeicher durchgeführt werden."

    Nun vermute ich, wie bereits in einem anderen Beitrag (http://www.c-plusplus.net/forum/viewtopic-var-t-is-162809-and-highlight-is-anweisung+verweist+speicher.html) angesprochen, dass es daran liegt, dass eine strcpy - Anweisung versucht in einen read-only Bereich des RAMs zu schreiben. Kann man irgendwie angeben, dass er diese Bereiche nicht nutzen soll zum Schreiben?

    DANKE!



  • Ja, du könntest einfach vorher genügend Speicher reservieren und drauf achten nicht über deine Puffer drüber zu schreiben 😉

    Die Fehlermeldung heisst nichts anderes als das du versucht auf Speicher zuzugreifen, den du nicht reserviert hast und welcher dir quasi gar nicht gehört.



  • Habe momentan keine Ahnung, wie man in C++ Speicher reservieren kann.
    Kann mir bitte jemand auf die Sprünge helfen?



  • strcpy() hört sich eher nach C an?

    char blupp[10]; // Für blupp werden 10 char's reserviert.
    
    // Crash! Wir kopieren 11 Chars hier:
    // Tatsächlich kopieren wir: >1234567890\0<
    // \0 ist das String-Terminierungszeichen.
    strcpy(blupp,"1234567890"); 
    
    // Das wäre OK: >123456789\0< 
    strcpy(blupp,"123456789"); 
    
    Ansonsten lässt sich Speicher auch selbst z.B. mittels malloc() holen.
    Sollte in jedem C-Tutorial stehen.
    
    In C++ wird man wohl eher mit "new" arbeiten und eher nicht mit strcpy() und C-Strings...
    


  • Danke zunächst einmal!


Anmelden zum Antworten