单片机/MCU论坛
直播中

Mr_RMS

7年用户 327经验值
擅长:可编程逻辑 嵌入式技术 处理器/DSP 接口/总线/驱动 控制/MCU
私信 关注
[问答]

谁能帮忙解释下关于内存分配的问题

谁能帮忙解释下关于内存分配的问题

回帖(8)

HAHA笑

2017-10-19 22:10:54
谢谢
举报

人中狼

2017-10-19 22:51:46
最好能把问题说得具体一些
举报

Mr_RMS

2017-10-20 15:22:30
引用: 人中狼 发表于 2017-10-19 22:51
最好能把问题说得具体一些

把程序烧到片子里,定义的一些变量。函数等是如何分配到内存的地址里的?
举报

Mr_RMS

2017-10-20 15:23:04
引用: Mr_RMS 发表于 2017-10-20 15:22
把程序烧到片子里,定义的一些变量。函数等是如何分配到内存的地址里的?

有没有讲解关于内存分配的书籍?
举报

人中狼

2017-10-20 19:34:52
c语言的内存分配有自己的规则,51的话有一定的固定规则,这个要查c51的编程书籍
举报

周大侠

2017-10-20 21:53:07
C语言深度剖析 第二版  楼主可以仔细看一下,总结了很多国外优秀的书的精华,很薄的一本书
举报

愚塘霸主

2017-11-4 11:22:59
一般mcu都是片内自带的flash,所以你要查看芯片知道手册,搞清楚你的memory分配。假如你的单片机内存是2kb,起始地址是0x1000-0x17FF。一般ide环境会根据你mcu内存分配,要设置你的栈,如果你的栈大小是256字节,如果你的栈向下生长,那你的栈起始地址是0x1800,栈顶指针。如果向上,栈顶指针0x1000。如果你还定义了堆大小,编译器会根据情况在你的ram范围里分配堆,其他未占用的ram就是你能用到的。一般情况下,你的静态变量全局量都在你未占用的ram。在函数中你声明的局部量在栈里。也有可能使用的cpu通用寄存器。而你的常量就会分配在flash里。你的函数这些代码也在flash里。
举报

愚塘霸主

2017-11-4 11:23:04
一般mcu都是片内自带的flash,所以你要查看芯片知道手册,搞清楚你的memory分配。假如你的单片机内存是2kb,起始地址是0x1000-0x17FF。一般ide环境会根据你mcu内存分配,要设置你的栈,如果你的栈大小是256字节,如果你的栈向下生长,那你的栈起始地址是0x1800,栈顶指针。如果向上,栈顶指针0x1000。如果你还定义了堆大小,编译器会根据情况在你的ram范围里分配堆,其他未占用的ram就是你能用到的。一般情况下,你的静态变量全局量都在你未占用的ram。在函数中你声明的局部量在栈里。也有可能使用的cpu通用寄存器。而你的常量就会分配在flash里。你的函数这些代码也在flash里。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分