Hello,
I I have a verry bad problem.
In my draw.h :
[source lang="cpp"]class CDraw : public CGraphic{ public : // constructor CDraw(const float& coef_resol_);...private : SDL_Surface *destimg;}[/source]
In my draw.cpp :
[source lang="cpp"]CDraw::CDraw(const float& coef_resol_) : CGraphic({0, 0}, coef_resol_), texture(NULL), destimg(NULL) {}void CDraw::~CDraw() { if(surface) SDL_FreeSurface(surface);/* segfault with it :-( */ if(destimg) SDL_FreeSurface(destimg);}[/source]
Well in all lines in draw.cpp, i'm not working with destimg. i commented all destimg. I have only destimg(NULL) and if(destimg) SDL_FreeSurface(destimg);
With gdb, with a break point before the if(destimg) i have :
(gdb) print destimg
$2 = (SDL_Surface *) 0x766177
And next a SEGFAULT.
I don t understand, thanks
SDL_FreeSurface and segfault
Started by killwin, Oct 23 2012 01:59 AM
2 replies to this topic
Sponsor:
#2 Members - Reputation: 1570
Posted 23 October 2012 - 03:01 AM
Two likely scenarios:
1) You write over the bounds of memory somewhere, thereby trashing the CDraw object and writing an invalid destimg pointer over the 0.
2) You are destroying an invalid CDraw object. Either because you delete the same object twice or you delete an uninitialized pointer.
1) You write over the bounds of memory somewhere, thereby trashing the CDraw object and writing an invalid destimg pointer over the 0.
2) You are destroying an invalid CDraw object. Either because you delete the same object twice or you delete an uninitialized pointer.






