mksu 发表于 2019-3-20 22:52:23

代码占用内存问题

请教大家一个内存的问题,

比如 我定义一个 unsigned char A; 的全局变量, 程序编译完应该是 RAM的 消耗 一个是 多了一个byte 吧!(这个应该没有异议!)

但有时为了 程序的可读性,会搞两个函数,比如

unsigned char get_A(void)
{
   return A;
}

void set_A(unsigned char val)
{
    A= val;
}

疑问:
1.这样是不是 RAM 就多消耗 2 byte ?
2. 如果 void set_A(unsigned char val), 定义为 const void set_A(unsigned char val), 那是不是这个函数就不占用 RAM 呢?
3. 如果 再如下 定义 一个宏,   那么 这个宏 占用消耗 1个byte的 RAM 吗?
      #defineA_IS_TRUE    ( TRUE == get_A() )


谢谢!

eric2013 发表于 2019-3-21 01:23:15

这个看编译器生成的map文件比较方便。

mksu 发表于 2019-3-21 23:33:57

eric2013 发表于 2019-3-21 01:23
这个看编译器生成的map文件比较方便。

谢谢 楼主!

对比结果:

1.定义多一个 函数 get_XXXX() 函数内存 data 和bss 断没有增加,但是text多了一个,但不是 1byte 是 0xc

2. 将函数 定义为 const 和 非const在map 上看不出差异~~~·

3. 使用 宏定义函数 get_xxxx(),定义和没有定义   在map 上也看不出差异

蒋武锋_uh464 发表于 2019-3-26 08:35:09

只有一个全局变量,总是一个字节吧,函数的返回跟参数是放在寄存器或者栈上的
页: [1]
查看完整版本: 代码占用内存问题