Hallo,
ich bin neu hier im Forum und wollte mal direkt ein Frage stellen zu den Code in Kapitel 12:
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
// Quit
//
// Aufgabe: Sprites freigeben
//
void CPlayer::Quit ()
{
// Spieler-Sprite freigeben
if (m_pSpritePlayer != NULL)
{
delete (m_pSpritePlayer);
m_pSpritePlayer = NULL;
}
// Schuss-Sprite freigeben
if (m_pSpritePlayer != NULL)
{
delete (m_pSpritePlayer);
m_pSpritePlayer = NULL;
}
} // Quit
|
Im Buch wird in der Init-Funktion zwei Sprites erzeugt: m_pSpritePlayer und m_pSpriteShot. Beide werden im Konstruktor auf NULL gesetzt und in der Init-Funktion deren jeweiligen Bildern etc. zugeordnet. Was mich verwirrt ist die Quit-Funktion. Im ersten Teil wird, wie erwartet, den Spieler-Sprite freigegeben und auf NULL gesetzt. Der zweite Teil sollte eigentlich den Schuss-Sprite freigeben und auf NULL setzen, aber im Code (vom Buch und CD) wird wieder m_pSpritePlayer auf NULL gesetzt, was für mich unlogisch ist, das man das ja vorhin schon gemacht hat. Eine Fehlermeldung seiten Compiler gibt es hier natürlich nicht, aber ist das hier am Ende nicht ein Memory-Leak, da man den m_pSpriteShot nicht freigegeben hat? Bzw. ist das hier überhaupt ein Fehler oder verstehe ich hier was falsch =/?
Hoffe ihr könnt mir helfen... .
MFG
Bareus