打印
[C语言]

关于内存分配的问题

[复制链接]
1102|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
醉心369|  楼主 | 2014-3-12 22:33 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
单片机中的RAM是不是有堆、栈和静态区呢?
每个区域的大小是固定的吗,还是他们会根据具体使用而动态变化 的?

有如下定义:
char *p="abcdef";
char a[]="123456";

该定义在函数内部,则指针变量p在栈上,abcdef在静态区,数组a在栈上。
如果该定义在函数外部,作为全局变量,他们的内存分配是否还是与在函数内部是一样的?
(我看书这样写道:全局变量在静态区)

相关帖子

沙发
ayb_ice| | 2014-3-13 11:06 | 只看该作者
这和具体编译器有关
很多低端MCU的C编译器并不符合标准C的分配原则,主要是这些MCU没有合适的指令支持栈分配变量,此时局部变量也是静态分配的,C51也是这样的

一般情况是
局部非静态变量会从栈中分配,
全局,静态,是静态分配的,地址是固定的
"123456"字符串是代码区

使用特权

评论回复
板凳
醉心369|  楼主 | 2014-3-13 22:28 | 只看该作者
ayb_ice 发表于 2014-3-13 11:06
这和具体编译器有关
很多低端MCU的C编译器并不符合标准C的分配原则,主要是这些MCU没有合适的指令支持栈分配 ...

keil c51的局部变量是静态分配的?只有指针是在桟上吗?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

60

主题

283

帖子

2

粉丝