Developer Network
Developer Network
Developer
:CreateViewProfileText:
登录
MSDN 订阅
获取工具
下载
Visual Studio
SDK
试用软件
免费下载
Office 资源
计划
订阅
Administrators
学生
Microsoft Imagine
Microsoft 学生合作伙伴
ISV
新手
Events(事件)
社区
Magazine
论坛
博客
第 9 频道
文档
API 和参考
开发人员中心
示例
停用的内容
非常抱歉。你请求的内容已被删除。将在 1 秒内自动重定向。
提出问题
快速访问
论坛主页
浏览论坛用户
FAQ
搜索相关主题
Remove From My Forums
积极答复者
多个变量被声明时,它们在内存中是不是连续的
Visual Studio Development
>
Visual C++
问题
0
登录进行投票
#include<stdio.h>
int main()
{
char a,b,c,*p,*q,*r;
printf("%d %d %d %d %d %d\n",&a,&b,&c,&p,&q,&r);
return 0;
}
用它来打印出编译器分配给这些变量的地址。
结果是 1245027 1245015 1245003 1244988 1244976 1244964
用十进制的格式打印出来为什么会差12?还有为什么会是递减的?
2009年5月1日 4:24
回复
|
引用
答案
0
登录进行投票
不是的,只有结构和数组里的数据地址是连续的.
局部变量是在程序的栈里分配的.
Hello world
已标记为答案
赵博
2009年5月1日 9:23
2009年5月1日 6:44
回复
|
引用
版主
全部回复
0
登录进行投票
不是的,只有结构和数组里的数据地址是连续的.
局部变量是在程序的栈里分配的.
Hello world
已标记为答案
赵博
2009年5月1日 9:23
2009年5月1日 6:44
回复
|
引用
版主
0
登录进行投票
C++标准里面也没有对结构和数组里的数据地址的连续性作出保证。
MSMVP VC++
2009年5月4日 22:20
回复
|
引用
版主
0
登录进行投票
不要期待数据在内存中是连续的,根据所在操作系统还有内存对齐等限制,数据在内存不一定是连续的。还有正向Vonger所说,自动变量会被创建到栈上,栈和堆的区别是,栈是由堆栈段的高地址开始向下增长的,而堆是有低地址向上增长。
2009年5月5日 1:09
回复
|
引用
版主