堆栈数据存储方式
-
堆栈是一个自高地址向下增长的内存空间,从图中可以看到我们的高地址,也就是栈底,而低地址大概4个空格的位置是栈顶。
也就是记住地址越低是栈顶,而且堆栈中要添加数据,地址要往跟低的地址移动。
接下来我们继续来看看,如何在堆栈中存取和读取数据,他既然是块内存,那么我们关注的肯定是存取和读取,首先堆栈中存入数据叫push,读取数据叫pop。堆栈管理数据的方式是先进后出,即存取进去的数据,会在堆底,最后存取进去的数据会在栈顶,所以最先拿出来的数据也是最后放进去的即栈顶。
这里有个需要注意的地方,就是很多人以为pop数据后,堆栈里面的数据就清空了,其实并不是。
之前说过堆栈其实就是一块内存,当我们pop后,其实知识把栈顶往下移了而已,内存里面的数据还是在的,并没有被清除掉,只是对于堆栈而言,那数据被弹出。当要push新数据,push很多个数据,或者pop很多个数据,都按照图示以此类推。
学习堆栈最重要的应该就是函数调用了,当我们调用完一个函数后,代码都会往下继续执行下一句代码,那么这一步在底层是如何实现的呢?CPU怎么知道接下来要执行你函数调用完后的下一句代码?
这一部分其实稍微学过汇编的都应该知道。当我们调用个函数的时候,在汇编层是叫Call myfunction,而调用函数的时候就会用到堆栈,传入的参数即:push。
西南地区IT社群(QQ)
- 云南
- 【昆明网页设计交流吧】243627302
- 【昆明nodejs交流吧】 243626749
- 【VUE】838405306
- 【云南程序员总群】343606807
- 【昆明UI设计】104031254
- 【云南软件外包】15547313
- 贵州
- 【PHP/java源码/站长交流群】55692114
- 四川
- 【成都Java/JavaWeb交流】86669225
- 【vaScript+PHP+MySql】116270060
- 【UI设计/设计交流学习群】135794928
- 重庆
- 【诺基亚 JAVA游戏博物馆】 559479780
- 【PHP,Java,Python,C++接单】 442103442
- 西藏