Forum: PC-Programmierung Zeiger auf Zeiger und Freigabe


von Mike (Gast)


Lesenswert?

Moin zusammen,
ich habe ein Framework, in dem ich SDL_CreateRenderer aufrufe und die 
Adresse in einem Zeiger m_pRenderer speicher. An einem anderen Ort rufe 
ich mein Framework-Renderer auf und speichere diesen in einer zweiten 
Member m_pSpriteRenderer. Das heißt, ich habe einen Zeiger auf einen 
Zeiger, da ich ja nicht das Objekt hole sondern lediglich einen Zeiger 
darauf oder?

Also darf ich m_pSpriteRenderer auch nicht freigeben, da die Adresse des 
Zeigers im Framework auch freigegeben wird korrekt? Ich müsste also im 
Framework m_pRenderer einfach freigeben, wenn ich das richtig verstehe.

von Rolf M. (rmagnus)


Lesenswert?

Mike schrieb:
> Das heißt, ich habe einen Zeiger auf einen Zeiger, da ich ja nicht das
> Objekt hole sondern lediglich einen Zeiger darauf oder?

Du musst dich schon entscheiden: Entweder hast du einen Zeiger auf das 
Objekt oder einen Zeiger auf einen Zeiger auf das Objekt.

> Also darf ich m_pSpriteRenderer auch nicht freigeben, da die Adresse des
> Zeigers im Framework auch freigegeben wird korrekt? Ich müsste also im
> Framework m_pRenderer einfach freigeben, wenn ich das richtig verstehe.

Du hast genau ein SDL_Renderer-Objekt, also kannst/darfst du das auch 
nur genau einmal freigeben, unabhängig davon, wieviele Zeiger du 
darauf hast.

von Borislav B. (boris_b)


Lesenswert?

Genau dafür hat der liebe Gott den Smart-Pointer erfunden :-)

von nicht"Gast" (Gast)


Lesenswert?

Borislav B. schrieb:
> Genau dafür hat der liebe Gott den Smart-Pointer erfunden :-)

In C?

von Fritz (Gast)


Lesenswert?

nicht"Gast" schrieb:
> Borislav B. schrieb:
>> Genau dafür hat der liebe Gott den Smart-Pointer erfunden :-)
>
> In C?

Für C wären das aber komische Variablennamen ("m_" kennzeichnet 
normalerweise Membervariablen).

von nicht"Gast" (Gast)


Lesenswert?

Fritz schrieb:
> Für C wären das aber komische Variablennamen ("m_" kennzeichnet
> normalerweise Membervariablen).

Kann sein, muss aber nicht. Viele Leute übernehmen irgend einen Schrott, 
weil sie denken, das ist cool und muss so gemacht werden.

Wenn er C++ programmiert, warum dann nicht SFML?

Die Warscheinlichkeit, dass er C++ programmiert ist nicht gering, aber 
wissen kann man es nicht.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.