【发布时间】:2015-07-28 18:03:24
【问题描述】:
当我反汇编 Chromium 二进制文件时,我注意到有以这种模式命名的函数:
_ZN6webrtc15DecoderDatabase11DecoderInfoD2Ev.part.1
如果我将此字符串提供给 c++filt,则输出为
webrtc::DecoderDatabase::DecoderInfo::~DecoderInfo() [clone .part.1]
那么这个 .part.1 后缀的真正含义是什么?如果它表明同一个函数有多个副本,他们为什么需要那个?是因为位置独立的要求吗?我使用 g++ 作为编译器。
【问题讨论】:
-
函数可能被不同的参数签名重载。
-
@πάνταῥεῖ:也有析构函数?
-
我只是猜测,但我敢打赌这是一种优化。它不是在多个函数中发出相同的代码块,而是发出一个公共代码块和几个调用它的存根。对于析构函数来说尤其如此,可以通过多种方式调用(例如,子类与通过
delete)。 -
@πάνταῥεῖ 我知道这一点。在这种情况下,函数具有不同的重命名。但这并不能解释“.part.1”的事情。