首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在C中减少内存使用的一些最佳实践是什么?

在C中减少内存使用的一些最佳实践是什么?
EN

Stack Overflow用户
提问于 2009-01-01 06:05:18
回答 16查看 22.5K关注 0票数 42

对于“内存高效的C编程”,有哪些最佳实践?大多数情况下,对于嵌入式/移动设备,低内存消耗的指导原则是什么?

我想对于a)代码存储器b)数据存储器应该有单独的指导方针

EN

回答 16

Stack Overflow用户

发布于 2009-01-01 09:56:57

在C语言中,在一个简单得多的层次上,考虑以下内容;

  • 使用#杂注包(1)来字节对齐您的结构
  • 使用联合,其中一个结构可以包含不同类型的数据
  • 使用位字段而不是整数来存储标志和小整数
  • 避免使用固定长度的字符数组来存储字符串,实现字符串池并使用指针。
  • 其中存储对枚举字符串列表的引用,例如字体名称,将索引存储到列表中,而不是字符串
  • 当使用动态内存分配时,请提前计算所需的元素数量以避免重新分配。
票数 28
EN

Stack Overflow用户

发布于 2009-01-01 14:40:01

我在使用嵌入式系统时发现了一些有用的建议:

  • 确保任何查找表或其他常量数据实际上都是使用const声明的。如果使用const,则可以将数据存储在只读存储器(例如,闪存或EEPROM)中,否则必须在启动时将数据复制到随机存取存储器,这会占用闪存和随机存取存储器空间。设置链接器选项,使其生成一个映射文件,并研究此文件以查看数据在内存映射中的确切分配位置。
  • 确保您使用了所有可用的内存区域。例如,微控制器通常具有可供您使用的板载内存(访问速度也可能比外部RAM更快)。您应该能够使用编译器和链接器选项设置来控制将代码和数据分配到的内存区域。
  • 要减小代码大小,请检查编译器的优化设置。大多数编译器都有开关来优化速度或代码大小。有必要尝试一下这些选项,看看是否可以减少编译代码的大小。显然,无论您的系统需要多少堆栈内存,都要消除重复代码,并相应地调整链接器内存分配(参见this question的答案)。要减少堆栈的使用,请避免在堆栈上放置大型数据结构(对于与您相关的任何“大型”值)。
票数 22
EN

Stack Overflow用户

发布于 2009-01-01 19:05:35

请确保尽可能使用定点/整数数学。许多开发人员使用浮点数学(以及缓慢的性能和大量的库和内存使用),而简单的缩放整数数学就足够了。

票数 16
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/404615

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档