在Linux中,“静态”变量存在于BSS段中(在未运行的代码中),“本地”变量存在于“堆栈”中。 这意味着函数本地的静态变量存在于BSS区域中。如何进行簿记以确保范围在函数内部?
答案 0 :(得分:3)
存储变量的地方与范围无关。编译器本身通常会限制范围(访问变量)。如果您有以下声明:
static int xyzzy;
在函数内,xyzzy
将不允许该函数外的代码访问,无论它是否具有静态存储持续时间。
任何这样做的尝试都是编译时错误,而不是运行时检查。
实际上,可以影响本地静态变量,但是会出现缓冲区溢出(运行到存在区域),而不是通过其名称(编译器将禁止)。