经常出现这个概念,其实是数据结构里面的内容,以及计算机体系结构?我不确定,这篇简单的看看。
好!就这两个了
栈是依赖于一个这样的结构的
入栈(Push):函数调用时,参数、返回地址、局部变量依次入栈。 出栈(Pop):函数返回时,释放局部变量,恢复返回地址,弹出栈内容。
比如一个这样的函数栈
里面的局部变量在栈里面
这就是所谓的套娃,因为有着先来后到~
下面就是咱们先运行的main,先把A函数放进来,接着是B。
因为栈也是划出来一块内存,那就有大小,有可能溢出-栈溢出(Stack Overflow)
递归调用层数过多 局部变量过大 调用栈深度超过栈空间
你看这个东西就无穷无尽的,就不要嵌套太深,容易出不来
可以优化一下,减少递归深度(改用循环)。
太大的就申请一块内存
free一下
这叫悬挂指针
在许多编程语言中(比如C),显示地从内存中删除一个对象或者返回时通过销毁栈帧,并不会改变相关的指针的值。
该指针仍旧指向内存中相同的位置,即使引用已经被删除,现在可能已经挪作他用。
就是释放过了,但是里面还有值,可以覆盖读写,需要清空一下。
这样就合适了
再总结一下