嵌入式C语言开发学习笔记 —— 内存陷阱

参考:
博文01:https://blog.csdn.net/u012800825/article/details/98054638
博文02:参考:《嵌入式系统高级C语言编程》 ,这本书有空好好看看

1. 内存分配方式

(1)从全局存储区(静态存储区)分配。

何时分配:程序编译时
生存周期:整个程序运行期间
例子:全局变量、static变量
(2)在栈(stack)上创建。

何时分配:函数执行时
生存周期:变量作用域期间
(3)在堆(Heap)上分配,即动态内存分配。

何时分配:由程序员自己决定
生存周期:由程序员自己决定
用法:malloc(), free()
(4)对存储器绝对地址进行访问。

系统程序员知道系统中每个程序单元在存储器中的位置,除了这个程序单元所占存储器的空间外,还存在一些空闲存储器空间。系统程序员可以通过绝对地址对这些空间进行访问。
应用:将系统常数烧写在Flash或ROM特定地址。

2. 局部变量

局部变量的内存陷阱在于,C语言编译器在处理局部变量时,将其要么放在CPU通用寄存器中,要么放在**堆栈(栈区又称堆栈)**中。而且局部变量的生存期有限。

注意事项:

由于无法确定编译器是否将局部变量映射到通用寄存器中,所以不

你可能感兴趣的:(01C语言基础知识)