嵌入式C程序中Const节省内存空间细节问题??

发布时间:2024-11-06 17:29

如下例是一个网上找的说明const节省存储空间的例证:
#define M 3 //宏常量
const int N = 5; //此时并未将N放入内存中
int main()
  {

  int i = N; //此时为N分配内存 ,以后不再分配
  int I = M; //预编译期间进行宏替换,分配内存
int j = N; //没有内存分配
int J = M; //在进行宏替换,又一次分配内存
  }
const定义的只读变量从汇编的角度来看,只是给出了对应的内存地址,而不是像#define一样给出的是立即数,所以,const定义的只读变量在程序运行过编译阶段进行替换,而const修饰的只读变量是在编译的时候确定其值。#define宏没有类型,而const修饰的只读变量具有特定的类型。
问题:
1. 记得调试时看到用const修饰的只读变量都是和代码放置在一起的,对MCU来说也就是ROM。我想问的是如果程序运行中调用该只读变量,还会降该变量重新拷贝到RAM中吗??多次调用该只读常量就只有第一次调用时拷贝到RAM中??

2. 对于那些const 修饰的比较大的只读常量被运行中的程序调用时有时怎么处理的??如const修饰的1k 的只读数组,RAM只有1K或者RAM小于1K时,程序还会将const 修饰的只读常量拷贝到RAM中吗??显然是不可能的。

3.如果对于普通的嵌入式系统,节省的是MCU的RAM还是ROM啊,好像只是ROM吧!

突然想起这个问题,由于手头没有可调试的工具,只能在网上请求各位大神了!见笑!!!

网址:嵌入式C程序中Const节省内存空间细节问题?? https://www.yuejiaxmz.com/news/view/11027

相关内容

const可以节省空间,避免不必要的内存分配
节省空间
如何处理家居装修中的细节装修问题?这些装修问题的处理技巧有哪些?
如何有效压缩图片内存以节省存储空间
C盘的“压缩驱动器以节约磁盘空间”有用吗
节省空间大作战 小房间装修有妙招
若你家厨房空间小,就别再抠细节,做好这4个设计,省空间还实用
(转帖)大厂面试:Redis中的ziplist为什么会节省内存?能节省多少内存
房间如何节省空间?卧室收纳如何节省空间?
如何节省居住空间?

随便看看