On Sat, 2007-12-01 at 18:02 -0500, Brett McCoy wrote: > On Dec 1, 2007 5:27 PM, Michael Sullivan <[EMAIL PROTECTED]> > wrote: > > > I know that a segmentation fault is the equivalent of a null pointer > > exception in Java, but I don't understand why it's happening here. > My > > full code is posted at > > http://www.espersunited.com/~michael/needhelp.txt . Basically the > > problem is this: > > A segmentation fault can mean you are accessing memory you have no > permission to use, like if you are trying to access memory you have > not allocated (null pointer). > > I didn't go through all of your code but a few things stuck out at me. > > One thing I recommend is to stop using char * or char[] and use the > C++ string class, it'll eliminate some headaches with strings. > > Also, instead of using a plain old array in your battle class, I'd use > a vector or or a list or similar kind of C++ container class, they are > a lot more flexible than plain old arrays, especially when it comes to > adding more entries into it. > > Definitely learn how to use a C++ debugger... if using gdb isn't up > your alley, get Eclipse, KDevelop or Anjuta (I am assuming you are on > Linux) and use their graphical debuggers (which probably use gdb > underneath). > > > class battle > > { > > private: > > Ally party[4]; > > }; > > > > battle::battle() > > { > > party[0] = Ally("Michael", 10, 7); > > party[1] = Ally("Amy", 8, 13); > > party[2] = Ally("Feli", 12, 15); > > party[3] = Ally("Imp", 9, 4); > > } > > > > class Ally : public Character > > { > > public: > > Ally(){} > > Ally(char*, long, long); > > ~Ally(); > > }; > > > > Ally::Ally(char* myname, long h, long m) : Character(myname, h, m) > > { > > printf("Arrived in Ally constructor for %s.\n", myname); > > } > > > > Character::Character(char *myName, long myMaxHP, long myMaxMP) > > { > > strcpy(name,myName); > > maxHP = myMaxHP; > > maxMP = myMaxMP; > > > > currentHP = maxHP; > > currentMP = maxMP; > > } > > > > Now I've tracked the SegFault down to the battle constructor, > > specifically the line where the 'Amy' Ally is being created. The > > program enters the Ally constructor, and then SegFaults. I have very > > little experience with gdb and ddd doesn't work at all. Can anyone > see > > the problem with this? Am I out of stack space? Do I need to start > > using the heap?
I found a handy feature of gdb called 'backtrace' that told me where the problem was. It seems I was attempting to call SDL_FreeSurface on a surface that I haven't gotten around to creating yet... >