初学英文和入门编程的时候,真的被stack是什么意思啊这个问题绕晕过,看着单词简单,实际用起来场景差得特别多,完全不是一个用法。

最开始只以为stack就是普通的堆东西,平时刷美剧、看国外生活视频,总能看到这个词,一直笼统理解成堆放,直到自己实操整理文件、接触编程基础,才彻底分清它的两种核心用法,也改掉了之前混用stack和heap的蠢毛病。

stack生活场景含义

日常生活里的stack,就是最直白的堆叠、摞起来,专指整齐、垂直一层层码放的东西,和随意堆放完全不一样。之前收拾租房的杂物,随便把书本、纸箱堆在角落,朋友看到就说这不是stack,只是乱堆。

真正的stack,是规整有序的垂直堆叠。比如超市里stack整齐的矿泉水、书桌stack好的笔记本、衣柜里stack折叠好的衣服,都是一层一层对齐,规整且立体。

很简单,乱堆不算stack。

stack编程技术场景含义

真正容易搞不懂的,是计算机领域的stack,也就是,这也是绝大多数人查这个单词的核心原因。刚开始自学Python基础的时候,完全分不清栈和堆,写代码总出现内存报错,折腾好久才搞明白两者的区别。

计算机中的stack是一种基础数据结构,遵循后进先出的固定规则,最后放进去的数据,会第一个被取出来。就像家里的桶装泡面,最后放进去的那包,一定是最先被拿出来的,最先塞进去的,反而压在最底下很难取出。

日常编程里,函数调用、临时变量存储、程序运行的内存缓存,基本都靠stack实现。计算机行业通用的ISO/IEC14882编程标准里,也明确标注了栈内存的临时存储特性,生命周期极短,程序运行结束就会自动释放,不会占用多余内存。

很多新手踩坑的点,就是把stack栈和heap堆混淆。栈内存空间小、读写速度快,只存临时数据;堆内存空间大、速度慢,用来存长期对象数据,两者的运行逻辑和用途完全割裂。

后来写基础代码的时候,特意刻意区分两个场景的stack用法,生活里就是堆叠动作,技术里就是栈结构,再也没弄混过。

睡前翻了下之前记的单词笔记,页面上密密麻麻圈着stack的两种释义标记。