我听说过.Net中的隔离存储一词.它究竟是什么以及使用了多远?该存储是否对用户不可见,并且只能由程序集(特定程序集或创建它的AppDomain)使用或写入?
我们有一个带有3个静态变量的函数.这很奇怪,但有时我们会看到3个静态变量中的一个正在重新初始化:
static uchar * Foo( uchar c_par1, uchar c_par2, uchar c_par3 )
{
static char s_var1[10];
static uchar c_var2 = 0;
static uchar c_var3 = 0;
.....
return s_var1;
}
Run Code Online (Sandbox Code Playgroud)
在上面的例子中,c_var2有时会被重新启动.
我们确信它是重新启动的,因为我们还打印了每个变量的内存位置,并且它永远不会改变.我们怀疑s_var1可能会覆盖c_var2,但这两个变量的内存位置相距很远.