C++抽象类有关问题

C++抽象类问题
抽象类不可以实例化,但是下面的例子怎么解释
class Vehicle
{
public:
virtual void run() const=0;
};

int main()
{
        Vehicle v1;         (1)
        Vehicle *v2;       (2)
}
为什么第一种情况编译器会报错:'Vehicle' : cannot instantiate abstract class,
而第二种情况编译器就不会报错呢?
------解决思路----------------------
我认为这个是否能够实例化,还可以从另一个角度考虑
编译器为一个对象实例化,必须知道这个对象需要占用多大的空间,每个成员的变量值是多少,当然如果没有构造函数就用随机的或者编译器内部约定的一种构造方式。但是对于这种抽象类,编译器无法确定 = 0(这种函数名称叫啥来着???)的这种函数,他的地址到底在哪里。一个类的成员函数地址找不到,自然是不能构造出对象的。