我们知道当一个函数被调用时,一块内存被推入堆栈,当函数完成其工作时,现在弹出了之前推送的内存块。 在所有情况下都是正确的。即使函数包含静态变量的声明?如果是,那么静态变量如何保留其值?它们是否在堆中分配了内存空间而不是堆栈?
答案 0 :(得分:4)
静态局部变量不会存在于堆栈中,它们与全局变量存在于同一内存中。 .bss是未初始化的全局变量将驻留的内存。 .data可以保存以初始值声明的变量。
答案 1 :(得分:2)
使用static
关键字声明的对象具有静态存储持续时间。当执行退出定义它的块时,具有静态存储持续时间的对象不会被释放。静态对象的生命周期是程序的生命周期:对象在程序启动时创建,在程序退出时被销毁。