栈变量的地址似乎不是按整型对齐的啊为什么?该怎么解决
栈变量的地址似乎不是按整型对齐的啊,为什么?
我在VC2010下面写了几行程序:
我期待的打印结果是223344
但是实际的结果是:
2220244823651245120
这是为什么呢? 难道在栈上面i,j,k不是连续分配的?
------解决方案--------------------
你只是把p指向了i,没有把p[xx]指向任何地方。那里面的值天知道是什么,反正不是那几个变量的存储位置。
------解决方案--------------------
楼主如果为了探索其特性,怎么试都可以,楼上正解了。
但实际使用中,不会出现这样的写法,因为毫无保障。
------解决方案--------------------
优化后可能 int j=33;
int k=44;直接没了
------解决方案--------------------
地址应该是越来越小的 基址是ebp 你反汇编一下不就都清除了
我在VC2010下面写了几行程序:
- C/C++ code
#include<iostream> using namespace std; int main(void){ int i=22; int j=33; int k=44; int* pi=&i; cout<<pi[0]<<pi[1]<<pi[2]<<endl; }
我期待的打印结果是223344
但是实际的结果是:
2220244823651245120
这是为什么呢? 难道在栈上面i,j,k不是连续分配的?
------解决方案--------------------
你只是把p指向了i,没有把p[xx]指向任何地方。那里面的值天知道是什么,反正不是那几个变量的存储位置。
------解决方案--------------------
楼主如果为了探索其特性,怎么试都可以,楼上正解了。
但实际使用中,不会出现这样的写法,因为毫无保障。
------解决方案--------------------
优化后可能 int j=33;
int k=44;直接没了
------解决方案--------------------
地址应该是越来越小的 基址是ebp 你反汇编一下不就都清除了