如何解决编译器或处理器在运行时如何区分静态局部变量?
我听说静态和全局存储在同一部分中。而且,如果这不是真的,就像全局变量一样,在代码被卸载或程序退出之前,不会从内存中删除静态本地变量。
考虑以下代码:
void f1() {
static int i;
...
...
}
void f2() {
static int i;
...
...
}
如果两个i
位于同一部分,处理器将如何区分它们?
调用函数时,处理器如何加载相应的静态局部变量?
这个问题可以扩展到多文件全局静态变量。
解决方法
每个变量应具有其自己唯一的位置和范围!范围很重要,每个变量都有一个与其关联的范围。这就是将const exec = require('child_process').exec;
setTimeout(() => {
console.log('poking nodemon to restart');
exec('pkill -f -SIGHUP nodemon');
},2000);
中的int i
与f1
中的int i
分开的原因。因此您可以看到,因为它存在于普通变量中,所以同样适用于静态变量。
您的问题使我有些困惑,但我想我已经回答了。如果您询问内存地址在哪里,则无法预测。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。