首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

栈变量的地址似乎不是按整型对齐的啊为什么?该怎么解决

2012-04-27 
栈变量的地址似乎不是按整型对齐的啊,为什么?我在VC2010下面写了几行程序:C/C++ code#includeiostreamus

栈变量的地址似乎不是按整型对齐的啊,为什么?
我在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 你反汇编一下不就都清除了

热点排行
Bad Request.