Marco H. schrieb:
> nach free()
>
> px=NULL;
> pxx=NULL;
>
> und auch prüfen ob du von malloc auch speicher bekommen hast !
Habe ich gemacht, betreffende Teile meines Code finden sich im Beitrag
16:25:00 05.05.2017 auf der 2.Seite unter folg. Link, wo über dieselbe
Aufgabe diskutiert wird: https://www.c-plusplus.net/forum/342707-10
Mein Gesamtprogramm enthält auch Code zum Anzeigen der Bytes auf dem
Heap, sodaß ich z.B. sehen kann, ob bei einer Zuweisung der Wert von x
oder die Adresse des px-Heapbereiches in den ppx-Heapbereich kopiert
worden ist.
Trotzdem: bei einem Zeiger, dessen Wert auf dem Heap liegt, auf einen
Zeiger, dessen Wert auf dem Heap liegt, auf ein Objekt im Speicher (oder
u.U. ebenfalls auf dem Heap) ist alles etwas tricky. Es wäre wohl auch
einfacher, nur mit void-Pointern und memcpy() zu arbeiten, anstatt sich
mit *p, **p usw. herumzuärgern. Aber das ist sicher nicht der Sinn der
Übungsaufgabe des TE.
> Das die App abschmiert ist logisch ...
> Da der pointer keine gültige Adresse besitzt.
Ich nehme an, daß sich diese Anmerkung auf folg. bezieht:
Rainer V. schrieb:
> falsch, verursacht AppCrash: *ppx = (int*) *px;
Hier wird *ppx der Wert von x (wie 0, 123, 456 o.a.) zugewiesen, was im
weiteren Verlauf zu einem Ausnahmefehler führt, weil dies keine gültige
Adresse ist oder weil auf fremden Speicher zugegriffen wird.
Marco H. schrieb:
> Außerdem gibt malloc den Type void zurück besser ist int
> *px=(int*)malloc(sizeof(int));
Besser ist es. Ohne diesen Typecast meckert mein C-Compiler zwar nicht,
aber in C++ wird sofort ein Fehler gemeldet.