程序运行堆栈

  堆栈是个特殊的存储区,属于RAM空间的一部分                      
  堆栈用于函数调用、中断切换时保护和恢复现场数据                      
                                 
  堆栈中的物体具有一个特征:第一个放入堆栈中的总是最后被拿出来                  
  堆栈中定义了一些操作,两个重要的是PUSH和POP                      
                                 
  PUSH入栈:堆栈指针SP加1,然后在堆栈的顶部加入一个元素                    
  POP出栈:先将SP所指示的内部RAM单元中内容送入直接地址寻址的单元中                  
    然后再将堆栈指针SP减1                            
                                 
  这两种操作实现了数据项的插入和删除                        
                                 
堆栈空间分配                              
  堆:由操作系统自动分配释放,存放函数的参数,局部变量等                    
  堆:由程序员分配释放,若程序员不释放,程序结束时可能由操作                  
                                 
                                 
申请响应:                              
  栈:只要栈的剩余空间大于所申请空间,系统将为程序提供内存,否则将报异常提示栈溢出              
                                 
  堆:首先应该知道操作系统有一个记录空闲内存地址的链表,当程序收到程序的申请时                
  会遍历该链表,寻找第一个空间大于所申请空间的堆节点                    
  然后将该节点从空闲节点链表删除,并将该节点的空间分配给程序                  
  会在这块内存空间中的首地址处记录本次分配的大小,这样,代码中的deliete语句才能正确的释放内存空间            
  另外,由于找到的堆节点的大小不一定正好等于申请的大小,系统会自动将多余的那部分重新放入空闲链表中          
                                 
                                 
                                 
存储内容:                              
  栈:在函数调用时,参数时从右往左入栈的,然后是函数中的局部变量                  
    静态变量是不入栈的                          
                                 
    本次函数调用结束后,局部变量先出栈,然后是参数,最后栈顶指针指向函数的返回地址,也就是主函数下一条指令的地址,程序由该点继续运行  
                                 
  堆:一般是在堆的头部用一个字节存放堆的大小                      
                                 
                                 
                                 
 
                               
                                 
                                 
                                 
                                 
                                 
                                 
                                 
                                 
                                 
                                 
                                 
                                 
                                 
                                 
                                 
                                 

猜你喜欢

转载自blog.csdn.net/weixin_38756546/article/details/87986190