通过从字符串IIN C 中删除垃圾字符来优化大小

Optimization for size through removing garbage characters from strings iin C++

本文关键字:字符 优化 删除 字符串 IIN      更新时间:2023-10-16

我有两个版本的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[])。

我的问题:此缓冲区的性质是什么以及如何从生成的二进制中删除垃圾字符?

在这里进行对齐。

链接器默认情况下将事物与页面大小(4K)对齐。请参阅下面的参考:

如何在GNU中指定ELF部分对齐为?

如何更改ELF

中代码段的对齐

还有代码对齐(指令对齐)极大地影响性能,但这与字符串文字无关,因此我将在此处省略。