【发布时间】:2017-03-11 11:06:09
【问题描述】:
我有两个版本的 Hello World 程序:
#include <iostream>
int main() {
std::cout<<"Hello World";
}
和
#include <iostream>
int main() {
std::cout<<"Hello World and a very long message";
}
如果执行严格的大小优化,我希望这些生成的二进制文件大小不同。但是,当我使用g++ -Os -o test test.cpp -Wl,--strip-all(使用GCC 5.4.0)进行编译时,我得到的文件大小相同(我的系统上为6336,即Ubuntu)。这意味着对于一些最小大小的缓冲区有一些垃圾空间(尽管在这个例子中我希望字符串是const char[])。
我的问题:这个缓冲区的性质是什么以及如何从生成的二进制文件中删除垃圾字符?
【问题讨论】:
-
指定目标系统可能是个好主意。不同的系统有不同的可执行格式,以及文件各个部分的不同对齐方式或最小大小。
标签: c++ optimization