【闭包】

16 阅读1分钟

首先看下面这张图。

微信截图_20230306220726.png

按理说,当A函数调用完毕,ECA出栈,ECA中先前分配的栈内存(也就是i),需要进行回收。
但由于ECG中的y,引用着0x123这个堆空间,而0x123堆空间中又在引用着ECA中的栈空间。
所以说,0x123这个堆和ECA中的i是不能被释放的。

由此,我们可以引出闭包的定义:

一个不能被回收释放掉的栈空间,就可以称之为闭包。

此时i会常驻内存,长时间会造成内存泄漏。

闭包的作用:

1、保护 可以保护EC中的数据,不能被外界直接访问。
2、保存 可以让我们像使用全局变量那样使用局部变量,延长了变量的生命周期。