E2函数内部则会调用析构函数,有人会说,为什么不直接将析构注册为函数回调,这样直接调用atexit不就在释放的时候,从后往前依次调用析构的了吗....会生成一个检查标志,根据这个标志判断,是否调用构造和析构
会跳过一个 构造和注册析构的一块区域
总结:
生成检查标志,跳过构造和注册析构代理....当Delete的时候会传入1, 这个是按位来的, 如果最低位为1,则是代表释放内存,那么就调用析构并且释放,如果为0,则仅仅代表了调用析构....为什么会这样:
在早期,硬件资源匮乏,内存想重复利用.
所以会有人显示的调用构造(vc6.0中可以)然后显示的调用析构进行管理,示例:
?...加上类域则可以调用构造了,那么析构我们是显示调用,所以看看汇编代码,会传入0,不会释放内存的.
?