- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
如果我转储 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/
这个问题在这里已经有了答案: C++ Overload Static Function with Non-Static Function (5 个答案) 关闭 7 年前。 我正在调查下面列出的函数重
如果我转储 GCC 为虚拟析构函数生成的代码(使用 -fdump-tree-original),我会得到如下信息: ;; Function virtual Foo::~Foo() (null) ;;
我正在尝试查看 gcc 是否可以提供更多信息,我可以使用这些信息从 C 源代码创建控制流图,然后使用它来检查 Gcov .gcov 中执行的测试用例采用的路径。输出。到目前为止,我最好的候选人是使用
我已经按照这里的描述创建了一个树转储:How can I dump an abstract syntax tree generated by gcc into a .dot file?对于这个虚拟脚本
当使用 -fdump-tree-gimple 选项 (GCC 4.6.1) 编译 C++ 时,我得到的代码具有以下功能: std::_Vector_base::~_Vector_base() [wit
对于此代码: class B1{ public: virtual void f1() {} }; class D : public B1 { public: void f1() {} };
我正在尝试将我的 C++ 程序的每个类的层次结构和虚函数表布局的表示转储到一个文件中。当我使用这个选项从命令行编译它时,我成功地做到了: g++ -fdump-class-hierarchy main
我是一名优秀的程序员,十分优秀!