Was soll die Funktion Output.write machen, was erwartest du von ihr?
Soll sie das ganze Array in eine Datei schreiben?
Das wäre dazu der einfachste Weg...
|
C-/C++-Quelltext
|
1
|
Output.write (Map, sizeof(int) *256);
|
Du übergibst als ersten Parameter Map.. der in diesem Kontext ein Pointer ist.
Ein Pointer auf das Array mit den 256 int
Als zweites übergibst du die Größe des Speicherbereiches, den du in deine Datei schrieben möchtest.
In diesem Fall die Größe von int * 256.
In deinem Code bist du in einer Schleife durch jeden Wert einzeln gegangen und wolltest jedes einzelne int in die Datei schreiben,
wobei du als Größe etwas übergibst wovon ich keinen Schimmer habe wie das ausgewertet wird.
Lass dir dochmal das Ergebnis von
|
C-/C++-Quelltext
|
1
|
sizeof(Map[x+y*16])
|
ausgeben (z.B. auf der Konsole) um
zu verstehen was da überhaupt passiert.
Dazu kommt.. Output.write erwartet einen Zeiger auf den Speicherbereich wo er die Daten findet.
Map[x
+y
*16] ist jedoch kein Zeiger. Und wenn du in nach char* castest, bedeutet dies, das du den Wert der sich in deiner Map
befindet als Zeiger auf einen Speicherbereich ausgewertet wird. In deinem Beispiel also versucht das Programm auf die Speicheradresse 0 zuzugreifen.
Da sich in deiner Map nach der Initalisierung lauter nullen befinden.
Initalisieren würde auch einfacher gehen, z.B. mit memset
|
C-/C++-Quelltext
|
1
|
memset(Map, 0, sizeof(int)*256);
|