Problem with SDL_FreeSurface

SDL_Surface* myNewSurface =
SDL_CreateRGBSurface(0,16,16,24,0xff000000,0x00ff0000,0x0000ff00,0);

//SDL_FreeSurface(myNewSurface); //<----works fine here
SDL_BlitSurface(original,0,myNewSurface,0);
//SDL_FreeSurface(myNewSurface); //<----putting it anywhere after that
blitsurface causes a breakpoint

for reference I’m using visual c++ 2008 express edition and the original surface
is a loaded PNG. I’m not really sure whats going on, but I believe it might have
something to do with the pixels field since that was the only field left that
still had a memory address.