gpt4 book ai didi

c++ - objdump 不显示 ostream 类的大小

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:18:57 25 4
gpt4 key购买 nike

我有这个代码:

#include <iostream>

int main()
{
std::cout << sizeof(std::cout) << std::endl;
return 0;
}

g++ -g main.cpp 编译它(它在我的操作系统上打印 272)

之后我执行 objdump --dwarf=info a.out并查看 ostream 的下一个调试信息条目 (die) :

<2><c5a>: Abbrev Number: 41 (DW_TAG_class_type)
<c5b> DW_AT_name : (indirect string, offset: 0x5fa): basic_ostream<char, std::char_traits<char> >
<c5f> DW_AT_declaration : 1
<c60> DW_AT_sibling : <0xc77>

实际上 ostream只是 basic_ostream<char, std::char_traits<char>> 的 typedefDie 不包含大小为 ( DW_AT_byte_size ) 的属性,我不明白为什么。可执行文件中的 ostream 类没有其他 die-s,但编译器应该知道该类的大小(它使用 sizeof 打印大小)。所以我的问题是:如何获得 ostream 的正确尺寸?来自矮信息的类 objdump .

最佳答案

根据spec DW_AT_Declaration 表示 DIE 正在描述声明而不是定义;您需要查看包含定义的目标文件。

关于c++ - objdump 不显示 ostream 类的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25582178/

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