注意,星级公众号,是的,令人兴奋的内容作者:StrongHuang微信公众号:StrongerHuang堆栈对于程序非常重要,程序可以快速运行,在堆栈中扮演非常重要的角色,但是您知道堆栈? 1我们都知道堆栈位于RAM中。
现在,MCU的RAM相对较大(几十或几百个K),因此分配的堆栈足够大,许多人并没有过多地关注此堆栈的大小。
但是,MCU的RAM过去很小,甚至不到1K,因此以前的工程师更加关注堆栈的大小。
对于小型项目,也许我们不需要关心堆栈大小。
但是,如果项目很大,则应注意它。
您的堆栈大小设置不合理,可能会导致故障。
如果您想了解堆栈的大小,则需要了解堆栈的功能。
让每个人都对堆栈有更多了解。
2在堆栈的基本知识上,让我们看一下两个经典知识。
1.程序内存分配C / C编译程序占用的内存分为以下几部分:堆栈区(stack):由编译器自动分配和释放,存储函数参数值,局部变量值等。
其操作是类似于数据结构中的堆栈。
堆:通常由程序员分配和释放,如果程序员不释放它,则在程序结束时OS可能会回收它。
请注意,它与数据结构中的堆不同,并且分配方法类似于链表。
全局区域(静态区域)(静态):全局变量和静态变量的存储放在一起,初始化的全局变量和静态变量在一个区域中,未初始化的全局变量和未初始化的静态变量彼此相邻。
一个地区。
程序结束后由系统释放。
文本常量区域:常量字符串放置在此处,并在程序结束后由系统释放。
程序代码区:存储功能体的二进制代码。
2.经典示例程序int a = 0; //全局初始化区域char * p1; //全局未初始化区域main(){int b; // stack char s [] =“ abc” ;; //堆栈char * p2; //堆栈char * p3 =" 123456&quot ;; // 123456