<分区>
我知道我没有说清楚。我认为,我的疑问可以总结为:
在可执行文件(机器代码)中,“变量”是如何表示的?它们是静态内存地址吗?编译器是否给每个人一个特定的“名字”(或者只保留你给他们的名字)?
用代码表示:
int x=5;
//Bunch of code
cin>>y;
cout<<x+1;
每台机器中的程序如何知道哪个地址将保存值 5、保存输入的值、将其现在保存的值加 1 并最终打印相同的值。
--若昂
<分区>
我知道我没有说清楚。我认为,我的疑问可以总结为:
在可执行文件(机器代码)中,“变量”是如何表示的?它们是静态内存地址吗?编译器是否给每个人一个特定的“名字”(或者只保留你给他们的名字)?
用代码表示:
int x=5;
//Bunch of code
cin>>y;
cout<<x+1;
每台机器中的程序如何知道哪个地址将保存值 5、保存输入的值、将其现在保存的值加 1 并最终打印相同的值。
--若昂
最佳答案
它是特定于实现的。
通常,变量的位置将基于各种因素和优化。它们可能根本不存在于 RAM 中,因为它们可能被优化为完全存在于寄存器中,或者完全被优化掉。
变量名在运行时不存在;它们在编译过程中被丢弃。但是,编译器可能会发出存储在应用程序二进制文件中的调试信息,以允许开发人员调试应用程序。不过,这通常会在发布版本中删除。
我不知道 Gameshark 的细节。但在许多情况下,可以通过查看应用程序的机器代码来确定特定变量的位置。
关于c++ - C++ 编译器如何编译变量名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9351698/