C++程序每次运行时同一变量的内存地址都相同的解释

#include <iostream>
using namespace std;

int main()
{
    int i=1;
    cout<<&i<<endl;
    
    return 0;
}

现象:程序每次运行时,&i的值都相同,都是0012FF44。
疑问:i属于局部变量,保存在栈中,它占据的内存是编译器自动分配和释放的,那怎么可能程序每次运行i都保存在同一地址中?
答疑:在程序运行时,程序被分配到一块内存,程序以此做为基地址,然后再在基地址上作偏移来使用内存,所以,&i实际上是一个偏移地址,它的实际地址=基地址+偏移地址。

评论: 0 | 引用: 0 | 查看次数: 5293
发表评论
登录后再发表评论!