这个问题在这里已经有了答案:
When is a static variable created?
(3 个回答)
去年关闭。
我想知道 VB.NET 局部静态变量在程序的虚拟地址空间中的存储位置,以及子例程/方法如何在调用之间保留其值?
为了了解进程的 VB.NET 虚拟地址空间,我在网上进行了广泛的搜索。有很多关于在 Linux 上运行的 Java 和 C 的图表和解释,其中包括虚拟内存中称为“共享”或“数据”的区域,但很难找到专门关于 VB.NET 的内容。就我所见,.NET 没有利用名为“共享”的进程的虚拟地址空间中的区域。我的问题是,局部静态变量的数据存储在哪里,子例程/方法如何在每次调用之间重新获得对它的访问?直观地,我假设共享变量的数据存储在堆之一(LOH 或 SOH)上,具体取决于大小,并且子例程/方法在其堆栈上有对此的引用。但是如果子程序结束,堆栈帧被移除并且引用丢失。它如何重新获得这个引用?
最佳答案
C++ 和 C# 静态变量有点不同,例如在 C# 编程语言中,您只能使用类成员静态变量(C++ 允许全局静态变量,以及函数局部的静态变量)。
有关内存分配的一些详细信息,您可以查看,例如:“静态关键字揭秘”[^] (C#),静态变量存储在哪里(在 C/C++ 中)?[^] (C++)。
关于vb.net - VB.NET 静态变量存储在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58005079/