我是靠谱客的博主 清新小甜瓜,最近开发中收集的这篇文章主要介绍为什么连续申请的两个 int 型变量的地址差值为 12 而不是 4 ?,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

@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 ?所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(63)

评论列表共有 0 条评论

立即
投稿
返回
顶部