相关疑难解决方法(0)

为什么Visual Studio中的连续int数据类型变量位于12个字节偏移?

要澄清这个问题,请观察c/c ++代码片段:

int a = 10, b = 20, c = 30, d = 40; //consecutive 4 int data values.

int* p = &d; //address of variable d.
Run Code Online (Sandbox Code Playgroud)

现在,在visual studio(2013年测试)中,如果p == hex_value的值(可以在调试器内存窗口中查看),那么,您可以观察到,其他变量a,b,c和d的地址是每个都有12个字节的差异!

那么,如果p == hex_value,则遵循:

&c == hex_value + 0xC (注意十六进制C是十进制的12)

&b == &c + 0xC

&a == &b + 0xC 
Run Code Online (Sandbox Code Playgroud)

那么,为什么有12个字节的偏移而不是4个字节 - int只有4个字节?

现在,如果我们声明一个数组:

int array[]  = {10,20,30,40};
Run Code Online (Sandbox Code Playgroud)

值10,20,30,40每个都按预期位于4个字节的差异!

任何人都可以解释这种行为吗?

c c++ stack visual-studio visual-studio-2013

16
推荐指数
1
解决办法
1290
查看次数

标签 统计

c ×1

c++ ×1

stack ×1

visual-studio ×1

visual-studio-2013 ×1