怎样缩短c语言的占内存大小,关于优化:减少C语言中的内存使用的最佳实践是什么?...

什么是"高效内存C编程"的最佳实践?

通常对于嵌入式/移动设备,低内存消耗的准则应该是什么?

我猜应该为a)代码存储b)数据存储单独制定准则

很高兴看到这么多截然不同的好答案,而不是重复。

让我完善您的头衔。"内存有效"还可以表示读取和/或写入速度。

在C语言中,从简单得多的角度考虑以下内容;

使用#pragma pack(1)字节对齐结构

在结构可以包含不同类型的数据的地方使用联合

使用位字段而不是整数来存储标志和小整数

避免使用固定长度的字符数组来存储字符串,实现字符串池和使用指针。

在存储对枚举字符串列表的引用的地方,例如字体名称,将索引而不是字符串存储到列表中

使用动态内存分配时,请预先计算所需的元素数量,以避免重新分配。

啊,我自己完全忘记了前三点。我认为它太明显了,因此忽略了它。 xD

是的阅读完您的书后,便增加了以上答案,并添加了所有更明显的遗漏。

1.这可能会带来速度损失。更好:智能地构造您的结构:struct s {int i;字符c; }而不是struct s {char c; int i;} 2.工会非常好。 3.位域可能会非常缓慢。谨防

@Mikeage-是的,我发现通常是针对内存或速度进行优化,而两者是相对的。

大多数嵌入式系统都有位操作指令,因此位域是一个不错的选择

我发现一些对嵌入式系统有用的建议:

确保使用const实际声明了任何查找表或其他常量数据。如果使用const,则数据可以存储在只读(例如闪存或EEPROM)存储器中,否则在启动时必须将数据复制到RAM,这会占用闪存和RAM空间。设置链接器选项,以使其生成映射文件,并研究该文件以查看数据在内存映射中的确切分配位置。

确保您正在使用所有可用的内存区域。例如,微控制器通常具有您可以利用的板载内存(与外部RAM相比,其访问速度也可能更快)。您应该能够使用编译器和链接器选项设置来控制将代码和数据分配到的内存区域。

要减小代码大小,请检查编译器的优化设置。大多数编译器都具有用于优化速度或代码大小的开关。可以尝试使用这些选项来查看是否可以减小已编译代码的大小。显然,应

你可能感兴趣的:(怎样缩短c语言的占内存大小)