Problem mit einem unsigned char Array

callis2

Grünschnabel
Hallo ich wollte aus einer Binärdatei Daten in eine Array lesen lassen, das klappt aber leider nicht so wie ich will, ghier der Code:

unsigned char *test
k=500;
test = new unsigned char [k] ;
stream_file.read(reinterpret_cast<char*>(&test),sizeof(test));
cout << test[0];

Das Problem ist, das er mir bei der Ausgabe von cout eine Zugriffverletung anzeigt, wobei ich mir sicher bin, das er etwas in das array schreibt.

wenn ich den code so umschreibe :


k=500;
new unsigned char test[k] ;
stream_file.read(reinterpret_cast<char*>(&test),sizeof(test));
cout << test[0];


funktioniert es wieso ?

Danke
 
Hi.
Hallo ich wollte aus einer Binärdatei Daten in eine Array lesen lassen, das klappt aber leider nicht so wie ich will, ghier der Code:

unsigned char *test
k=500;
test = new unsigned char [k] ;
stream_file.read(reinterpret_cast<char*>(&test),sizeof(test));
cout << test[0];
Lass dir erstmal nur den Wert von sizoef(test) ausgeben.
Das Problem ist, das er mir bei der Ausgabe von cout eine Zugriffverletung anzeigt, wobei ich mir sicher bin, das er etwas in das array schreibt.
Nein, das ist nicht ganz richtig. Warum wendest du hier einen reinterpret_cast an? Auf die Adresse eines Zeigers? :confused:

Die Daten werden jedenfalls nicht in das Array geschrieben, sondern du schreibst die Daten an die Stelle des Zeigers; und überschreibst somit den Zeiger (und andere Daten) der dann nicht mehr auf eine gültige Adresse zeigt. Was dann letztlich zur Zugriffsverletzung führt.
wenn ich den code so umschreibe :


k=500;
new unsigned char test[k] ;
stream_file.read(reinterpret_cast<char*>(&test),sizeof(test));
cout << test[0];

funktioniert es wieso ?
Also der Code macht nicht viel Sinn - und ich bin doch einigermaßen überrascht, dass dein Compiler den Code akzeptiert... :confused:

Probier's mal so:
C++:
const int k = 500;
char* test = new char[k];

stream_file.read(test, k);

test[k - 1] = '\0';
cout << test << endl;
...
delete[] test;
Gruß

PS: Bitte verwende die Code-Tags wenn du Quelltext in deinen Beitrag einfügst!
 
Zurück