gpt4 book ai didi

c++ - gcc -fdump-tree-original 的输出

转载 作者:太空狗 更新时间:2023-10-29 21:08:38 25 4
gpt4 key购买 nike

如果我转储 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>:;”之后的代码在哪里?它在析构函数之外,所以这段代码什么时候执行?

最佳答案

这看起来像是编译器生成的代码,用于在调用析构函数后管理实际的内存释放,并且应该在析构函数代码之后立即执行。

关于c++ - gcc -fdump-tree-original 的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2685104/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com