我注意到如果我跑strings
在我编译的程序上g++
输出包含它使用的各种类的名称。
该程序是用-O3
并且没有-g
or -p
,并且当我剥离二进制文件时,类名仍然存在。
我想知道为什么有必要g++
将此信息存储在二进制文件中?出现的类名似乎都是使用虚函数的类,所以我怀疑这与它有关。
这可能与RTTI http://en.wikipedia.org/wiki/Run-time_type_information具体来说,RTTI 允许您查询给定变量的类名称。请参阅typeid http://en.wikipedia.org/wiki/Typeid关键词。如果是这种情况,那么就可以解释为什么它只发生在具有虚函数的类中 - RTTI 仅适用于具有虚函数的类。
Edit:正如@xeno指出的,它确实是RTTI,如果你添加-fno-rtti
类名不会出现在字符串输出中。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)