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).