C++获取编译代码中使用的一部分代码的大小

标签 c++

有没有办法知道编译后的可执行文件中的变量或对象使用了多少指令或资源?

例如,我想知道空的 std::vector<int> 有多少空间将在编译后的二进制文件中使用。

最佳答案

告诉编译器生成汇编列表(编译器/链接器选项,取决于您的编译器和平台)。然后使用变量或对象编译一次,一次不使用变量或对象。比较两个生成的列表中的行数。这应该会给你指令数的差异。

编辑:由于各种优化、对齐、代码重新排序,测量可能不是 100% 准确。正如@Klaus 指出的那样,当超过内联阈值并从更多来源生成更小的列表时,可能会出现悖论结果。

编辑:特别是与 C++ 模板相关的内容,另请参阅 Can we see the template instantiated code by C++ compiler

(您提到“在已编译的可执行文件中”,所以我假设您问的是编译时,而不是运行时)。

关于C++获取编译代码中使用的一部分代码的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36400069/

相关文章:

c++ - C++ 中 and() 函数的用途

c++ - 在通用 lambda 捕获中使用 this 指针

c++ - 纯虚函数声明中的 `= 0`是什么意思?

c++ - 包含所有包含 header 内容的临时文件

c++ - 销毁具有静态存储持续时间的对象

c++ - 如何在 C++ Linux 中执行程序

c++ - 使用 Nvidia GPU Computing 工具包和 Cygwin with Eclipse 编译错误

c++ - 只能看到单个白点 CUDA/OpenGL interop

c++ - 指针问题.. ( C++ )

c++ - 滚动区域内的 QWidget