Вывод gcc -fdump-tree-original - PullRequest
       17

Вывод gcc -fdump-tree-original

3 голосов
/ 21 апреля 2010

Если я дам дамп кода, сгенерированного 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>:;"? Он находится вне деструктора, так когда же выполняется этот код?

1 Ответ

3 голосов
/ 24 апреля 2010

Это похоже на сгенерированный компилятором код для управления фактическим освобождением памяти после вызова деструктора и должен выполняться сразу после вашего кода деструктора.

...