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.
Sonstiger Berufsstatus, Punkte: 505
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
Markdown wird unterstützt.
Hallo jobe, vielen Dank
─ aa 21.06.2022 um 08:04Ja 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.