如int i;i=6; 这里我知道系统要为变量i分配4个字节,那6这个整形常量还需要单独分配内存吗?还是说6不用再单独分配内存,而只是作为一个整数存在i这个变量所占的内存中?
因为谭浩强的书上有这样一句原话“在程序中出现的常量是要存放在计算机的存储单元中的。这就必须确定分配给它多少字节,按什么方式存储。例如,程序中有整数12,在Visual C++ 6.0中会分配给它4个字节,按补码方式存储。”这书上的话不太懂,看着话的意思是就单单一个整数12,也要占4个字节,我如果写int i=12,那是不是总共要占8个字节(i占4个,12占4个?)
这个6会作为立即数写死在生成的代码中,不再占据额外的内存
我觉得这种说法太过笼统,要说占内存也可以说占比如生成的代码中会有mov [i],12 这样的代码,程序运行过程中代码被映射到内存中,也就是占内存,至于i,如果是全局变量,那么会在程序加载到内存中时,就为i分配四个字节的内存,如果局部变量,程序运行过程中会根据编译生成的代码操作esp算是未局部变量申请内存,函数结束就释放了
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。