程序在栈中分配变量的不连续

BaiYangSpirit 2009-07-05 11:02:35
/*
如下代码,我发现打印出来的对变量分配的内存地址不连续,存在部分空白,能说明一下程序的分配机制吗?
*/
#include <iostream>

using namespace std;

int main()
{
int i = 15;
int j = 18;
char c1 = 'A',c2 = 'B';
int f1 , f2;
char c3;
int i1;

cout<<"&i:"<<&i<<endl
<<"&j:"<<&j<<endl;

cout<<"&c1:"<<(void *)(&c1)<<endl
<<"&c2:"<<(void *)(&c2)<<endl;

cout<<"&f1:"<<&f1<<endl
<<"&f2:"<<&f2<<endl;

cout<<"&c3:"<<(void*)(&c3)<<endl;
cout<<"&i1:"<<&i1<<endl;

return 0;
}
/*我的显示结果如下:
&i:0x22ff74
&j:0x22ff70
&c1:0x22ff6f
&c2:0x22ff6e
&f1:0x22ff68
&f2:0x22ff64
&c3:0x22ff63
&i1:0x22ff5c

分析:

&c2:0x22ff6e
&f1:0x22ff68 之间的分配明显多了2个字节,

&c3:0x22ff63
&i1:0x22ff5c 之间的分配则多了3个字节,

貌似在栈中是按照4个字节为单位进行分配的,为什么?
*/
...全文
138 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
Walf_ghoul 2009-07-06
  • 打赏
  • 举报
回复
没啥说的。。顶个。。看看链接先。。。
lingyin55 2009-07-05
  • 打赏
  • 举报
回复
baihacker 2009-07-05
  • 打赏
  • 举报
回复
http://topic.csdn.net/u/20090704/22/6029E524-7CCD-4A99-A0B2-7D0C3B31620A.html
见上面的链接

64,649

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧