【发布时间】:2016-07-04 09:57:55
【问题描述】:
我有一个使用 arm-none-eabi-gcc 编译的嵌入式应用程序,我遇到了大内存使用问题。
使用arm-none-eabi-nm 我可以找出为某个对象分配了多少内存。但是当这个对象是类实现时,我不知道有多少内存使用类的每个成员。怎么知道?
很难为每个成员调用sizeof(),因为有很多类成员,并且没有嵌入式应用程序的控制台。
【问题讨论】:
-
您可以从链接器分析扩展列表(使用静态用法)。对 uP 最流行的误解是常量(如果以特定方式声明的注释)从闪存复制到 RAM。
-
X 类大小 { char * buf; } 在运行时对 RAM 的使用几乎没有影响。一般很难帮助你,没有代码
-
@JacekCz 我敢让你编译
class X { char * buf; }和arm-none-eabi-gcc... ;) -
链接器通常会输出一个映射文件,它通常会为您提供程序分配的每一件事的所有详细信息。