015
24.07.2003, 15:47 Uhr
0xdeadbeef
Gott (Operator)
|
deklariert eine Variable, weist aber keinen Wert zu. Das heißt, da kann alles mögliche drinstehen, in der Regel ziemlicher Mist (und kein NULL-Pointer, den müsste man erst explizit zuweisen). Und das bedeutet, dass p mit ziemlicher Sicherheit nicht auf den Stack zeigt. Wenn du diesen Mist jetzt einfach so an scanf übergibst, denkt scanf, dieser Mist wäre eine Speicheradresse, an der du Speicher für den String reserviert hast, durch malloc oder ein Array beispielsweise. Das bedeutet, dass scanf die Zeichen an die Adresse schreibt, die in p drinsteht - wie wir uns erinnern, steht da aber völliger Blödsinn drin. Nun stell dir mal vor, das Ding zeigt irgendwo in den Kernel-Space, oder in den Speicher einer anderen Applikation. Du kannst die wildesten Effekte damit haben, und so ziemlich jeder halbwegs vernünftige Kernel wird dir sofort ein SIGSEGV schicken.
Was du mit dem Stack willst, ist mir schleierhaft, der spielt in diesem Zusammenhang überhaupt keine Rolle. -- Einfachheit ist Voraussetzung für Zuverlässigkeit. -- Edsger Wybe Dijkstra Dieser Post wurde am 24.07.2003 um 15:48 Uhr von 0xdeadbeef editiert. |