首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

const解决方法

2012-02-23 
const使用c++时,比如使用const标识符,那么在内存中如何表示它只读的呢,是在内存哪里,比如哪个段??[解决办

const
使用c++时,比如使用const标识符,那么在内存中如何表示它只读的呢,是在内存哪里,比如
哪个段??

[解决办法]
C++里面的const只读,只是一种语言层面的只读,是给编译器看的,让编译器替程序员检查那些非主观意愿的变量修改。跟内存中的只读没有必然的关系。跟内存页属性中的只读、可执行之类的属性更是八杆子打不着。
[解决办法]
没有特殊安排,看下段这个代码和他对应的汇编就知道了
#include <iostream.h>
void main()
{
const int a = 10;
int b = 1;
const int c = 2;
int d = 3;
float e = 4.0f;
double f= 5.0;
cout < < "a = " < <a < < "b = " < <b < < "c= " < <c < < "d= " < <d < <endl;
}
下面的汇编只对应那几句赋值语句
5: const int a = 10;
00401058 mov dword ptr [ebp-4],0Ah
6: int b = 1;
0040105F mov dword ptr [ebp-8],1
7: const int c = 2;
00401066 mov dword ptr [ebp-0Ch],2
8: int d = 3;
0040106D mov dword ptr [ebp-10h],3
9: float e = 4.0f;
00401074 mov dword ptr [ebp-14h],40800000h
10: double f= 5.0;
0040107B mov dword ptr [ebp-1Ch],0
00401082 mov dword ptr [ebp-18h],40140000h
是按给定的Ebp的地址一直往前排的,没有特殊安排

热点排行