Hallo,
ich hab in mein neues projekt sdl_ttf eingebunden und verwendet, doch jetzt kommt immer wenn beim spiel der teil, wo schrift erscheinen soll, aufgerufen wird, folgende meldung:
|
Quellcode
|
1
2
|
Fatal signal: Segmentation Fault (SDL Parachute Deployed)
Press any key to continue
|
ich kenn die meldung und weiß, dass ein zeiger auf falschen zeiger zugreift oder so.
hier ist mal der relevante Code:
Game.h
|
Quellcode
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
#ifndef GAME_H
#define GAME_H
#include "Asteroid.h"
#include "Player.h"
#include <SDL_ttf.h>
class CGame
{
public:
CGame ();
Quit ();
private:
void CheckPoints (int m_Points);
int m_Points // Punkte
SDL_Surface *m_pScreen; // Screen
TTF_Font *m_pFont; // SchriftFont
SDL_Surface *m_pSText; // ScreenText
SDL_Rect dstTextKoordinaten; // Koordinaten
SDL_Color clrBlack; // Farbe
};
#endif
|
Game.cpp, CGame ()
|
Quellcode
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
// Konstruktor
//
// Aufgabe: Allgemeine Initialisierungen
//
CGame::CGame ()
{
m_pScreen = NULL;
m_pFont = NULL;
m_pSText = NULL;
} // Konstruktor
|
Game.cpp, Quit
|
Quellcode
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
// Quit
//
// Aufgabe: Instanzen freigeben
//
void CGame::Quit ()
{
// Screen freigeben
if (m_pScreen != NULL)
{
delete (m_pScreen);
m_pScreen = NULL;
}
// Font freigeben
if (m_pFont != NULL)
{
delete (m_pFont);
m_pFont = NULL;
}
// Screentext freigeben
if (m_pSText != NULL)
{
delete (m_pSText);
m_pSText = NULL;
}
} // Quit
|
GAme.cpp, CheckPoints
|
Quellcode
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
// CheckPoints
//
// Aufgabe: Punktestand aktualisieren
//
void CGame::CheckPoints (int m_Points)
{
TTF_Init();
m_pFont = TTF_OpenFont("Arial.ttf",18); //Beim ersten Parameter die Schriftart einsetzen, der Zweite ist die Schriftgrösse
SDL_Color clrBlack = {0, 0, 0};
m_pSText = TTF_RenderText_Solid(m_pFont, "Text", clrBlack);
SDL_Rect dstTextKoordinaten = {200, 300, 0, 0};
//dann in der Hauptschleife
SDL_BlitSurface(m_pSText, NULL, m_pScreen, &dstTextKoordinaten);
//und dann zu guter Letzt noch
SDL_FreeSurface(m_pSText);
}
|
wieso kommt da ein fehler? ich hab doch alle zeiger richtig geNuLLt und auch wieder freigegeben.
und es kommen außerdem diese beiden warnungen:
|
Quellcode
|
1
|
c:\dokumente und einstellungen\eigene dateien\projekte\projekte\möp\game.cpp(210) : warning C4150: Loeschen eines Zeigers auf den undefinierten Typ '_TTF_Font'; Destruktor wurde nicht aufgerufen
|
wenn ich draufklicke, kommt hier ein pfeil:
|
Quellcode
|
1
2
3
4
5
6
|
// Font freigeben
if (m_pFont != NULL)
{
delete (m_pFont);
m_pFont = NULL;
}
|
vor dem delete.
darunter kommt diese meldung:
|
Quellcode
|
1
|
c:\dokumente und einstellungen\eigene dateien\projekte\projekte\sdl_ttf-2.0.9\include\sdl_ttf.h(80) : Siehe Deklaration von '_TTF_Font'
|
wenn ich da doppelklicke, komm ich in diese zeile von SDL_ttf.h:
|
Quellcode
|
1
2
|
/* The internal structure containing font information */
typedef struct _TTF_Font TTF_Font;
|
könnt ihr mir helfen?
vielen dank im voraus,
mfg Gon