Mir kommt da was seltsam vor



  • Ich hab da mal in C++ nen bissel ausprobiert und da is mir was extrem Spanisch vorgekommen:

    #include <cstdlib>
    #include <iostream>
    
    using namespace std;
    
    int main(int argc, char *argv[])
    {
        char b[6]="Hallo";   //Ein 6 Byte großer Speicher mit dem Wort "Hallo"
        cout << b << endl;   //Hallo word ausgegeben
        cin  >> b;           //Hier kann man was in b reinschreiben
        cout << b << endl;   //und es wird auch wenn es größer als 6 byte ist ausgegeben
        cout << "Gr\x94 \báe b: " << sizeof(b) << endl;
    
    // und wenn wir jetzt nachträglich mal kontrollieren wie viel Speicher denn
    // jetzt für unseren cString genutzt wurde bleibt er auf 6 selbst wenn man 
    // 20 Zeichen in b abgespeichert hat Warum?   
    
        system("PAUSE");
        return EXIT_SUCCESS;
    }
    

    Und warum funktioniert das überhaupt 20 Zeichen in eine 6 Byte großen Feld
    abzuspeichern?



  • Das ist halt C++... da kannst Du ganz leicht Speicher überschreiben...
    Da es Funktioniert ist Zufall. In den meisten Fällen wird e
    wohl abstürzen (oder ab VC 7 wird er im Debug-Modus beim Ve lassen der Funktion ein Fehler feststellen).


Anmelden zum Antworten