关于c++ 中的const 这是什么情况?解决思路

关于c++ 中的const 这是什么情况?
如下代码:

const int n = 1;
int n1, n2 = 3;
int *p = (int*)&n;
*p = 2;
n1 = n;
n1 = n2;
int nSize = sizeof(n);
int nSize1 = sizeof(n1);
在int n = 1处加断点1
在n1 = n;处加断点2  
然后执行程序到断点1处  查看内存&n内存储的是1
运行到断点2处 查看内存&n内存储的值编程了2
接着往下运行n1 = n发现n1 = 1  此时查看&n内存储的值还是2

接着运行nSize = 4

下面是反汇编
const int n = 1;
0041139E  mov         dword ptr [n],1  
int n1, n2 = 3;
004113A5  mov         dword ptr [n2],3  
int *p = (int*)&n;
004113AC  lea         eax,[n]  
004113AF  mov         dword ptr [p],eax  
*p = 2;
004113B2  mov         eax,dword ptr [p]  
004113B5  mov         dword ptr [eax],2  
n1 = n;
004113BB  mov         dword ptr [n1],1  
n1 = n2;
004113C2  mov         eax,dword ptr [n2]  
004113C5  mov         dword ptr [n1],eax  
int nSize = sizeof(n);
004113C8  mov         dword ptr [nSize],4  
int nSize1 = sizeof(n1);
004113CF  mov         dword ptr [nSize1],4


看这两句对比
n1 = n;
004113BB  mov         dword ptr [n1],1
n1 = n2;
004113C2  mov         eax,dword ptr [n2]  
004113C5  mov         dword ptr [n1],eax 
TN的 貌似编译器直接给那个n1赋了个1,根本就没有从&n里去取数据,那为什么还要给n分配内存呢?



------解决方案--------------------
常量折叠么?没看代码,估计就是问这个