1) Run the program in your debugger to, among other things, find out exactly where the crash occurs (
clicky)
2) Entity
must have a virtual destructor. As is, the following code may explode:
Entity* foo = new Derive();delete foo;
3) Please always copy & paste real source code. (If you really are directly copy and pasting a class named "Derive" from what you're compiling, you may want to start naming your classes better ;-))
If the crash is actually occurring on the update() call, I'm guessing your vector contains uninitialized, deleted, or otherwise invalid pointers. Since update() doesn't access any of the member variables of the class (or functions that do so themselves), the implicit "this" pointer isn't actually being used when update isn't virtual. By making the function virtual, your compiler beings using the implicit "this" pointer to get the virtual table so it can call the correct function for the class you're using.
A way to confirm this would be to make Entity::update print out xCo and yCo instead of just "***Update". This would cause the code to crash even if the function isn't virtual if my guess is right.
Edit: Ninja'd thrice <_<