你只new了一次,delete也只需要一次。 自然没有内存泄漏。你这里p1已经变成了悬挂指针,虽然它的值并不是NULL,这个指针的值存储的是对应堆内存的地址,因为已经被删除掉了,所以这个地址已经没有意义了。而它本身是一个指针,在栈上,内存不用你手动管理。至于派生类对象删除的问题,delete一个对象就是调用它的 析构函数。只要基类的析构函数是virtual的,指向子对象都会自动找到相应的析构函数的。