概述
@time 2019-07-20
@author Ruo_Xiao
举栗说明,不同的编译方式结果不一样。
#include <iostream>
int main()
{
int i;
int b;
std::cout << "&i - &b " << (long long)&i - (long long)&b << std::endl;
std::cin.get();
return 0;
}
Debug,结果为:12
Release,结果为:4
为什么 Debug 和 Release 的两个变量的地址的差值不一样呢?按理说局部变量依次压入一个栈帧中,两个变量应该是按照内存对齐原则挨在一起的,但为什么只有 Release 的结果是正确的,而 Debug 是不对的呢。那是因为 Debug 版的程序含有大量的调试信息,这些调试信息会在变量前后各占4个字节,再加上 i 本身的内存,故占了12个字节。
(SAW:Game Over!)
最后
以上就是清新小甜瓜为你收集整理的为什么连续申请的两个 int 型变量的地址差值为 12 而不是 4 ?的全部内容,希望文章能够帮你解决为什么连续申请的两个 int 型变量的地址差值为 12 而不是 4 ?所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复