Thanks for trying to help Grumpy!
I took a lengthy break from staring at the code, and when i came back it hit me.

I was adding rockets to a vector in my spaceship class whenever space is pushed, i was then passing this list to my entity manager which amongst other things runs the code i posted above. The entity manager added the elements to the mList vector which holds all entities, however i did not clear the vector in the spaceship each time i passed it on to the manager class, so each rocket had multiple pointers pointing to it in the mList vector. This meant that whenever a rocket returned true for IsDead(), it would be deleted, and alot of subsequent pointers in mList would be pointing nowhere. Calling Update() on a random memory address obviously results in mayhem.

This also fixed some weird issue i was having with the rockets moving way to fast, obvious since Update() would be called on each rocket multiple times each frame.

Oh well, rookie mistake i guess!