Permalänk
Medlem

C++ Minnesläckage

någon som ser direkt varför?

void renderManager::showScore(int x, int y, int score,SDL_Surface* textsurface, SDL_Color txtColor,TTF_Font* font, SDL_Rect* clip) { std::ostringstream Stream; Stream << score; std::string strScore = Stream.str(); textsurface = TTF_RenderText_Solid( font, strScore.c_str(), txtColor ); applySurface( x, y, textsurface, screen, clip ); }

Visa signatur
Permalänk
Medlem

Bara från den kodsnutten så är det såvitt jag kan se helt omöjligt att avgöra var minneläckaget sker.
Det kan ju hända att du skapar pekare som inte städas bort i någon av funktionerna applySurface eller TTF_RenderText_Soldid, men det är ju tyvärr omöjligt att se här.

Visa signatur

Namn : Jesper | Ålder : 45 | In-game namn : iller
Yrke : Matematisk modellerare (finansiell matematik), mjukvaruutvecklare för risksystem.
Utbildning : Doktor i matematik + en del mat-stat, numme och IT-relaterat.

Permalänk
Medlem

Man vet ju inte var allokeringarna sker skulle anta att du kanske skapar någon ny textsurface i TTF_RenderText_Solid() som du inte deallokerar när du är klar med den.
Men egentligen är det omöjligt att se något fel här

Permalänk
Medlem

Om du kikar i dokumentationen: http://www.libsdl.org/projects/SDL_ttf/docs/SDL_ttf_43.html
så finner du att: The caller (you!) is responsible for freeing any returned surface.
alltså måste du släppa: textsurface då du är klar med den.

Visa signatur

weeeee

Permalänk
Medlem

void renderManager::showScore(int x, int y, int score,SDL_Surface* textsurface, SDL_Color txtColor,TTF_Font* font, SDL_Rect* clip) { std::ostringstream Stream; Stream << score; std::string strScore = Stream.str(); textsurface = TTF_RenderText_Solid( font, strScore.c_str(), txtColor ); applySurface( x, y, textsurface, screen, clip ); SDL_FreeSurface(textsurface); //tack grabbar! }

dum jag e, klart jag måste deallokera om jag använder funktionen i spel loopen

Visa signatur