0

Wass passiert, wenn man auf Indizes schreiben, die außerhalb des Speicherbereichs eines Array liegt?

Diese Frage melden
gefragt

Punkte: 12

 
Kommentar schreiben
1 Antwort
0

Hallo alexx1, das hängt von der Programmiersprache und eventuell von Generierungsoptionen ab. PASCAL hat z. B. die Möglichkeit bei falschen Indizes das Programm mit einem runtime error zu beenden. C hingegen rechnet einfach die (falsche) Speicheradresse aus und schreibt ohne Hemmungen in verbotenen Speicherbereichen. Bei anderen Programmiersprachen musst du weitere Spezialisten fragen. Gruß jobe.

Diese Antwort melden
geantwortet

Sonstiger Berufsstatus, Punkte: 505

 

Hallo jobe, vielen Dank
Ja ich meinte in C Programm. Meinst du, dass es in den Speicherbereichen außer das Array geschrieben wird? Oder wie kannst du bitte noch bisschen erklären. Dankeschön.

  ─   aa 21.06.2022 um 08:04

Hallo alexx1, ja, der C Compiler ist sehr dumm. Wenn du ein long array[10] hast reserviert er 40 Byte im Speicher und merkt sich die Startadresse der Variablen. Wenn du nun auf irgendein Element zugreifst rechnet der Compiler einfach Elementnummer * 4 Byte + Startadresse. Mehr nicht. Wenn du jetzt auf Element 15 zugreifst rechnet der Compiler halt einfach 15*4+Startadresse und liegt weit außerhalb des erlaubten Bereichs. Wenn da nichts Relevantes gespeichert ist passiert nicht viel. Meist sind da aber andere Variablen oder noch schlimmer, bei einem lokalen Array in einer Funktion, Stack-Informationen anderer Funktionen und Rücksprungadressen. Dann ist definitiv Chaos angesagt. Über solche fiesen Möglichkeiten haben Hacker schon Trojaner eingeschleust. Gruß jobe

  ─   jobe 21.06.2022 um 16:24

Kommentar schreiben