过多的静态变量会导致堆栈溢出吗?

问题描述

据我所知,诸如 static int number = 5; 之类的东西将被初始化一次,然后可以在以后进行修改。为了保持它的价值,内存不能被释放或者它必须再次初始化自己,这无论如何都会破坏 static 的目的。像这里这样的东西是一个很好的用例示例,无需声明类的成员变量,

while (true){
    static bool windowOpen = false;
    
    if (windowOpen == false){
        windowOpen = true;
        OpenWindow();
    } 
}

如果它是一个非静态变量,该窗口将无休止地打开。这是一个虚拟示例,因为您可以在循环外删除变量,但是在更大的代码库中,如果没有静态或类,几乎不可能做到这一点。现在,如果您在整个程序中都应用这些,那么在程序完成之前这些变量永远不会被释放?如果它只是一个非静态变量,它将被释放出作用域。假设你在整个程序中有多个基于堆栈的数组,它们被标记static,随着时间的推移,这将建立起来,如果该内存没有被释放,那么这将累积起来直到它导致堆栈溢出?我对此的保留是,在这个例子中,类成员和静态变量之间应该没有区别,只是类将超出范围并且内存被释放?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)