小白笔记3---堆栈

可参考  https://blog.csdn.net/myqq1418/article/details/81584761

堆栈:

     "栈(stack)”和“堆(heap)”是两种不同的动态数据区,栈是一种线性结构,堆是一种链式结构
    堆(heap): 一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收;公用,如果想要使用,可以通过malloc(sizeof(xxx))得到一部分堆空间;堆是由低地址向上增.
    栈(stack):由编译器自动分配释放,包括函数的参数,局部变量值等临时变量,用完即释放;栈是由高地址向下.
    二者都是连续的
    若堆一直往上增加,而栈一直向下申请,那么最后可能会造成堆栈溢出


    以51单片机举例,51单片机存储空间包括片内RAM,片外RAM,ROM;
    片内RAM具体分区:  00H ~ 1FH 工作寄存器
                     20H ~ 2FH 位寻址区
                30H ~ 7FH 用户RAM区
                80H ~ FFH 特殊功能寄存器(52单片机高128位)
    堆栈区是在RAM中开辟的一块地址,同时提供了相对应的硬件,即SP寄存器.
    一般堆栈区在低128位,单片机复位后,SP默认地址为7FH.
    在51单片机中,ROM的地址为0000H~FFFFH(64k),使用与RAM不同的指令操作.
    在MSP430中,存储器采用统一结构,虽然物理上完全分离存储区域,如RAM,ROM,外围模块,SFR等,但是被安排在同一地址空间,使用同一组地址,数据总线,指令.
    MSP430中,堆栈的存储空间在0200H以上.

  

  

猜你喜欢

转载自www.cnblogs.com/ssherry/p/12155246.html