【发布时间】:2015-04-24 17:35:40
【问题描述】:
我正在开发一个应该使用尽可能少内存的库(我不关心其他任何事情,比如二进制大小或速度优化)。
我可以使用任何 GCC 标志(或任何其他与 GCC 相关的选项)吗?我应该避免某种程度的 -O* 优化吗?
【问题讨论】:
-
我实际上不知道控制虚拟内存使用的 any 编译器的任何编译器选项。这几乎完全由您的代码控制。编译器唯一控制的是二进制大小。
-
编译器只能尝试减小代码大小(使用-Os)。您使用的内存量完全取决于您——当您请求 malloc() 时,您是否希望它拒绝?
-
如果您的架构支持未对齐的数据获取,您可以防止结构内的填充。
-fpack-struct用于 gcc。 -
@holgac 如何检查我的架构是否支持未对齐的数据获取?
-
您可能可以在 Internet 上找到有关您的 CPU 的信息。如果没有,请查看您的 CPU 规格。例如,x86 和 x86_64 架构支持它,但会导致严重的性能损失。但 SPARC 或 i64 中未对齐的内存访问会导致错误。