Speicherverwaltung |
InformaTiger
Tripel-As
Dabei seit: 19.02.2013
Beiträge: 228
Herkunft: Südtirol
|
|
Hallo Informatics,
ich habe mir soeben deine Aufgabenstellung durchgesehen und bin zu folgendem Ergebnis gekommen:
- hier ist das Problem, wie du ganz richtig erkannt hast, dass der Speicher den du anlegst nicht mehr freigegeben wird und der Pointer einfach mit einer neuen Adresse überschrieben wird, so dass der alte Wert für immer im Speicher verschwindet
- die Variable ret ist zu beginn auf einen willkürlichen Wert gesetzt, das heißt sollte z nicht gerader größer als 1000 sein kann ret mal true mal false zurückggeben
- ich denke hier liegt das Problem viel mehr daran, dass du einfach über den "Rand" des Arrays hinausgreifst (das Array ist nur n - 1 groß und in Zeile 20 erfolgt ein Zugriff auf n)
- hier wird die Variable n einfach eliminiert bevor der return-Befehl ausgeführt wird (nein, man kann &z nicht zurückgeben, da es sich dort um eine lokale Adresse vom Stack handelt die beim return-Befehlt verworfen wird)
- hier passiert genau das was ich in 4. angekündigt habe - es wird ein lokaler Zeiger zurückgegeben der nicht mehr gültig ist, sobald du den scope der Funktion lv verlässt
Ich hoffe ich konnte helfen
Mit freundlichen Grüßen
InformaTiger
__________________ Why do Java developers wear glasses? Because they can't C#
|
|
28.01.2018 20:14 |
|
|
|