exasam
Enthusiast
Thread Starter
- Mitglied seit
- 15.08.2007
- Beiträge
- 2.277
Hi, habe hier ne ziemlich blöde Aufgabe:
Und zwar soll dort in der letzten Zeile ein korrekter aufruf von free stattfinden. So dass der in mistake2() allokierte speicher wieder freigegeben wird. Alles was man hat ist also der pointer aus in *p[4]..
Ich bekomme es einfach nicht auf die Reihe. Wir könnten auch in der Methode mistake2 etwas verändern, sollen aber die Änderungen so gering wie möglich halten.
Code:
(...)
int *
mistake2 ()
{
int *buf = [COLOR="Red"]malloc[/COLOR] (sizeof (char) * 4);
buf[0] = 2;
return buf;
}
(...)
int
main (void)
{
/*Zeilen nicht verändern*/
int *p[4] = { &mistake1 ()[1], [COLOR="Red"]&mistake2 ()[1][/COLOR], mistake3 (), mistake4 () };
printf ("1 %d\n", *p[0]);
printf ("2 %d\n", *p[1]);
printf ("3 %d\n", *p[2]);
printf ("4 %d\n", *p[3]);
/* free korrekt verwenden*/
[COLOR="Red"]free[/COLOR] (p[1]);
}
Und zwar soll dort in der letzten Zeile ein korrekter aufruf von free stattfinden. So dass der in mistake2() allokierte speicher wieder freigegeben wird. Alles was man hat ist also der pointer aus in *p[4]..
Ich bekomme es einfach nicht auf die Reihe. Wir könnten auch in der Methode mistake2 etwas verändern, sollen aber die Änderungen so gering wie möglich halten.