erase() just removes an object from the vector, it does not delete the object. I would write that releaseAll() function like this:
static void releaseAll(){
std::vector<ManagedClass*>::iterator first = track.begin()
while( first != track.end() )
{
delete *first;
first++;
}
track.erase(track.begin(),track.end());
}