2011-08-04 44 views
1

在Linux中,“静态”变量存在于BSS段(代码中未运行),“本地”变量出现在“堆栈”中。 这意味着函数本地的静态变量存在于BSS区域。如何完成簿记以确保范围在功能本身内?函数本地的静态变量

回答

3

存储变量的地方与范围无关。通常是编译器本身限制范围(访问变量)。当你有一个像声明:

static int xyzzy; 
一个函数中

xyzzy将不会被允许通过代码函数外部访问,不管事实,即它具有静态存储时间。

任何尝试这样做都将是编译时错误,而不是运行时检查。

事实上,你可以影响局部静态变量而是像一个缓冲区溢出(运行到它存在的存储区域),通过它的名字(编译器将不允许)不会。

+0

当然,谢谢! – sril