ich in der Dokumentation von sbrk
Systemaufruf gesucht und gefunden this:Bedeutung (void *) -1
Bei Erfolg
sbrk()
gibt die vorherige Programmunterbrechung. (Wenn die Pause erhöht wurde, ist dieser Wert ein Zeiger auf den Anfang des neu zugewiesenen Speichers). Bei einem Fehler wird(void *) -1
zurückgegeben underrno
wird aufENOMEM
festgelegt.
Jetzt
Was ist die Bedeutung von
(void *) -1
?Wie lautet die genaue Speicheradresse? (Wenn es überhaupt)
Wie wird sichergestellt, dass
(void *) -1
ist keine gültige Adresse , die vonsbrk()
auf Erfolg zurückgeführt werden kann?
Es tut mir leid, wenn ich total noob klingen, aber wie ist '(void *) -1' gleich' 0xFFFFFFFF' – tomol
@tomol, lesen Sie auf [2s Komplement] (https: //www.cs.cornell.edu/~tomf/notes/cps104/twoscomp.html) – Matt
@tomol, denke in die andere Richtung, wie viel ist '0xFFFFFFFF + 1'? es ist '0'! ... Sobald die Variable aufgrund ihrer Bitsize-Limits überläuft, können interessante Dinge passieren ;-) – Myst