博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
堆和栈
阅读量:4306 次
发布时间:2019-06-06

本文共 681 字,大约阅读时间需要 2 分钟。

1、栈区(stack) — 由编译器自动分配释放,存放函数的参数值,局部变量的值等。(临时变量,退出该作用域就会自动释放)

2、堆区(heap) — 程序员分配释放,若程序员不释放,程序结束时可能由OS回收。(malloc变量,通过free函数释放)

3、全局区(static) — 全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域,未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。程序结束后由系统释放。 

4、文字常量区 — 常量字符串就是放在这里的。程序结束后由系统释放  

5、程序代码区 — 存放函数体的二进制代码。  

Keil中启动引导文件定义堆和栈区的大小

Stack_Size      EQU     0x00000800
 
                AREA    STACK, NOINIT, READWRITE, ALIGN=3
Stack_Mem       SPACE   Stack_Size
__initial_sp
                                                  
; <h> Heap Configuration
;   <o>  Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>
; </h>
 
Heap_Size       EQU     0x00000400
 
                AREA    HEAP, NOINIT, READWRITE, ALIGN=3
__heap_base
Heap_Mem        SPACE   Heap_Size
__heap_limit
6、
栈:向低地址扩展
堆:向高地址扩展

转载于:https://www.cnblogs.com/iemb/archive/2013/04/27/stack001.html

你可能感兴趣的文章
css样式图片、渐变、相关小知识
查看>>
python FTP服务器实现(Python3)
查看>>
查看python内部模块命令,内置函数,查看python已经安装的模块命令
查看>>
[LeetCode][JavaScript]3Sum Closest
查看>>
UML入门之类图教程
查看>>
Christmas
查看>>
弹性布局----Flex
查看>>
Android音频系统之AudioPolicyService
查看>>
【计算机算法设计与分析】——5.4最优二分检索树
查看>>
不浮躁的社会是什么样的?
查看>>
KVM安装
查看>>
haproxy
查看>>
oracle中 rownum与rowid的理
查看>>
Linux之RPM 软件管理程序
查看>>
.NET 面试题(2)
查看>>
(转)java内部类详解
查看>>
mysql+mybatis递归调用
查看>>
mongoDB的安装(一)
查看>>
Spring Boot:快速入门教程
查看>>
「BZOJ2879」[Noi2012]美食节
查看>>