如果我转储 GCC 为虚拟析构函数(使用 -fdump-tree-original)生成的代码,我会得到如下信息:
;; Function virtual Foo::~Foo() (null)
;; enabled by -tree-original
{
<<cleanup_point <<< Unknown tree: expr_stmt
(void) (((struct Foo *) this)->_vptr.Foo = &_ZTV3Foo + 8) >>>
>>;
}
<D.20148>:;
if ((bool) (__in_chrg & 1))
{
<<cleanup_point <<< Unknown tree: expr_stmt
operator delete ((void *) this) >>>
>>;
}
我的问题是:“ <D.20148>:;
”之后的代码在哪里?它在析构函数之外,所以这段代码什么时候执行?