Hmm, es scheint, dass das Problem nicht an meinem Array lag bzw liegt.
ich habe nun alles auf Vectoren umgeschrieben und ich kriege den gleichen Fehler, nun diesmal beim verlassen des Scopes.
Die neue Init Funktion:
|
C-/C++-Quelltext
|
1
2
3
4
5
6
|
{
CText Element;
Element.Init(Text, Posi_X, Posi_Y, Size, Color_R, Color_G, Color_B, Bold);
Elements.push_back(Element);
}
|
Beim verlassen dieser Funktion kann doch Element geöscht werden, eine Kopie liegt doch jetzt nun im Vector. oder?
Jedoch bekomme ich den gleichen Fehler solbald das Element gelöscht wird.
Habe mich mit Haltepunkten durch gearbeitet und es liegt an diesem Übeltäter:
|
C-/C++-Quelltext
|
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
30
31
32
33
34
35
36
|
void CText::CreateSprite()
{
TTF_Font * Font = NULL;
SDL_Surface * Text_Surface = NULL;
Color = { Color_R, Color_G, Color_B, 255 };
if (Bold == true)
{
Font = TTF_OpenFont("Data/OpenSans-Bold.ttf", Size);
}
else if (Bold == false)
{
Font = TTF_OpenFont("Data/OpenSans-Regular.ttf", Size);
}
if (Font != NULL)
{
Text_Surface = TTF_RenderText_Solid(Font, Text.c_str(), Color);
Text_Texture = SDL_CreateTextureFromSurface(Text_Element.Get_Renderer(), Text_Surface);
SDL_QueryTexture(Text_Texture, NULL, NULL, &Text_Rect.w, &Text_Rect.h);
Text_Rect.x = Posi_X - (Text_Rect.w / 2);
Text_Rect.y = Posi_Y - (Text_Rect.h / 2);
}
else
{
cout << "Error: Font konnte nicht geladen werden!" << endl;
}
TTF_CloseFont(Font);
Font = NULL;
SAFE_DELETE(Text_Surface); // <<<<<<<<<---------------
}
|
Es Liegt wies aussieht am SAFE_DELETE. Falls ich es auskomentiere läuft es das Programm weiter bzw. es Crasht dann an einer anderen Stelle
Die Surface wird doch nicht mehr benötigt... die kann doch weg und der Pointer dann auf NULL setzen.
EDIT: Habe gerade im SDL Wiki gelesen das ich die Surface mit SDL_FreeSurface(surface) löschen muss.... verzeihung
EDIT2: Nachdem ich nun alle Destruktoren von SAFE_DELETE befreit habe und die Richtigen SDL Befehle gesetze habe Funzt alles Prima Blume...
Tut mir echt das ich da so schlampig gearbeitet habe und eure Zeit in anspruch genommen habe.....
Mfg Urprimat