b***y 发帖数: 2799 | 1 ☆─────────────────────────────────────☆
julietzn (juliet) 于 (Thu Feb 21 22:51:54 2008) 提到:
面试的时候被问到的
int * p = new int[10];
delete [] p;
complier 如何实现 delete [], 他们怎么知道有10个int 需要 delete.
接下来是一个衍生出来的问题:
class Base{};
class Derived : public Base{};
Base *p;
Derived q;
p = &q;
如果delet p, 实际上应该delet p所指向的 object q.
那么这个delet 需要两步实现:
1. call the destruction function of q // There is no problem, if the
destruction of q is virtual.
2. free the memory of q. //question: complier 是如何知道要release 多少memo |
|