如inti;i=6;这里我知道系统要为变量i分配4个字节,那6这个整形常量还需要单独分配内存吗?还是说6不用再单独分配内存,而只是作为一个整数存在i这个变量所占的内存中?因为谭浩强的书上有这样一句原话“在程序中出现的常量是要存放在计算机的存储单元中的。这就必须确定分配给它多少字节,按什么方式存储。例如,程序中有整数12,在VisualC++6.0中会分配给它4个字节,按补码方式存储。”这书上的话不太懂,看着话的意思是就单单一个整数12,也要占4个字节,我如果写inti=12,那是不是总共要占8个字节(i占4个,12占4个?)
2 回答
一只斗牛犬
TA贡献1784条经验 获得超2个赞
这个6会作为立即数写死在生成的代码中,不再占据额外的内存我觉得这种说法太过笼统,要说占内存也可以说占比如生成的代码中会有mov[i],12这样的代码,程序运行过程中代码被映射到内存中,也就是占内存,至于i,如果是全局变量,那么会在程序加载到内存中时,就为i分配四个字节的内存,如果局部变量,程序运行过程中会根据编译生成的代码操作esp算是未局部变量申请内存,函数结束就释放了
添加回答
举报
0/150
提交
取消