全站数据
8 4 2 0 5 8 1

堆栈和栈有什么区别

自考过来人 | 简单学习,快乐成才!         
问题更新日期:2024-10-10 18:12:09

问题描述

堆栈和栈有什么区别,麻烦给回复
精选答案
最佳答案

程序的局部变量存在于(栈)中,全局变量存在于(静态区 )中,动态申请数据存在于( 堆)中这样说比较准确,所谓的栈其实是由寄存器ebp和esp指向的一片内存空间(ebp指向栈底,esp指向栈顶),原则上是由高地址向低地址生长的一片空间,会保存一些临时的数据,比如一个函数中的临时变量以及返回地址,数据的出入是先进后出,后进先出.全局变量实际上是存在一个(一般来说正常的编译器)可读可写的内存空间,这个空间是在你写程序编译好的空间地址(由编译器决定),是固定的.堆是由操作系统管理的一片空间,事先是没有在进程空间里分配的(比如你在没有分配堆的时候就访问堆空间会报一个内存访问错误),一般是由程序动态的分配出来,一旦分配了以后,一般需要程序去释放自己的堆空间.这只是简单的描述一下概念,如果要深入讲这三个空间的结构还是有些复杂度的