变量与内存

2019-08-17 03:58发布

今天在STM8S103上添加了一个3K的图片数组,发现编译不通过,原来STM8S103的RAM只有1K,而ROM是8K。编译时数组是不是存放在RAM中所以编译不过。
而加上const后存储在ROM后可以编译通过。
那么问题来了:
   1.数组一开始编译时放在哪?
   2.运行时数组是放在哪?
   3.如果我将一个大型数组存放在24C02中,然后使用一个小型容量的芯片读取出来显示是否会成功。

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
15条回答
Owen
2019-08-18 10:49
本帖最后由 Owen 于 2017-6-29 11:50 编辑
MissLiu 发表于 2017-6-29 10:28
我使用的是IAR编译,一开始是全局变量的大型图片数组,编译失败,但是在数组前面加上const可以通过编译是 ...

加上const之后数组存在FLASH,不加const存在RAM里。网上说的意思应该是:const修饰的是常量,存在flash,整个程序只在存储器中固定位置保存一个数组,整个程序公用,都到对应的地址提取数据;非常量的话比如你要把数组作为实参传给函数,那么函数就需要开辟内存缓存数组的值,就格外浪费了内存。简单来说,就是你的理解是对的

一周热门 更多>