<p>I sometimes notice programs that crash on my computer with the error: "pure virtual function call".</p>

<p>How do these programs even compile when an object cannot be created of an abstract class?</p>

I'd guess there is a vtbl created for the abstract class for some internal reason (it might be needed for some sort of run time type info) and something goes wrong and a real object gets it. It's a bug. That alone should say that something that can't happen is.
Pure speculation
edit:
looks like I'm wrong in the case in question. OTOH IIRC some languages do allow vtbl calls out of the constructor destructor.