1. Probably.
2. No. The virtual table takes up space. Exactly how much will depend on the implementation.
3. No. See #2.
4. Doubly no. There's an inherent space overhead when using dynamic allocation, the exact value of which again depends on the implementation. Also see #2.
Although I know what you meant, I'd just like to point out that asking about space requirements for things that are not dynamically allocated is somewhat pointless.
Note that per instance of a derived class you don't have a full virtual table, just a pointer to the table. (Or multiple pointers in the case of multiple inheritance)