小白笔记3---堆栈

再详细可参考博客文章小白笔记3---堆栈

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

小白笔记3---堆栈


    以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以上.

上一篇:Flash、RAM、ROM的区别


下一篇:Android Studio 之 ROM【2】, LiveData+ViewModel+AsyncTask+Repository