函数本地的静态变量

时间:2011-08-04 14:25:07

标签: linux stack static-variables

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

1 个答案:

答案 0 :(得分:3)

存储变量的地方与范围无关。编译器本身通常会限制范围(访问变量)。如果您有以下声明:

static int xyzzy;

在函数内,xyzzy将不允许该函数外的代码访问,无论它是否具有静态存储持续时间。

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

实际上,可以影响本地静态变量,但是会出现缓冲区溢出(运行到存在区域),而不是通过其名称(编译器将禁止)。