有管C++中静态变量开内存的有关问题

有管C++中静态变量开内存的问题
[code=C/C++][/code]
#include<iostream.h>
void fun1(void);
void main()
{
 static a ;
 static b ;

 cout<<"main:"<<"a:"<<a<<endl<<"b:"<<b<<endl;

 fun1();

}
void fun1(void)
{
static a = 2; 
static b = 5;

 cout<<"fun1:"<<"a:"<<a<<endl<<"b:"<<b<<endl
}

上面代码中在 fun1 的a, b和在 main 中的a, b,他们是共享一个内存空间还是不同空间呢

------解决方案--------------------
因为编译器搜索变量就是按照作用域来搜索的。。。不然的话你在fun1里定义一个变量a,编译器不是要搜索所有其他函数里的定义了,因为按照作用域,所以可以只搜索fun1的作用域和全局作用域