| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 609 人关注过本帖
标题:[求助]栈的问题
只看楼主 加入收藏
不以物喜
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2007-8-1
收藏
 问题点数:0 回复次数:9 
[求助]栈的问题

#include <stdio.h>
#include <conio.h>
int StackTest()
{
int b=2;
int a=1,*ptr;
int c=3;
ptr=&a;
printf("a的地址是:%d\n",&a);
ptr+=1;
//此处加1,则顺利执行,b的值被置零
//加2 ,弹出错误
//加3,弹出错误
*ptr=0;
printf("%d\n",a);
printf("%d\n",b);
printf("%d\n",c);
printf("堆栈已破坏,函数将不能正常返回!");
return 0;
}

int main()
{
int d=9;
printf("d的地址是:%d\n",&d);
StackTest();
printf("d的值是:\n");
printf("%d\n",d);
return 0;
}
&a=1244960,&d=1245052,相差92,为什么会差这么大的空间?
执行的时候,d先入栈,然后pc,sr,bp,然后是StackTest()函数的局部变量b,a,ptr,c,但为什么a和d的在栈中的地址相差那么大呢(92)?

搜索更多相关主题的帖子: int ptr 堆栈 include 
2007-08-03 16:38
bupthehe
Rank: 1
等 级:新手上路
帖 子:61
专家分:0
注 册:2007-8-2
收藏
得分:0 
楼主,你的d跟a就丝毫没有关系啊

他们又没有存放在同一个站内啊
2007-08-03 16:58
不以物喜
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2007-8-1
收藏
得分:0 

什么意思?
难道不是一个程序只有一个栈吗?
请讲详细点阿
。。。


2007-08-03 17:11
bupthehe
Rank: 1
等 级:新手上路
帖 子:61
专家分:0
注 册:2007-8-2
收藏
得分:0 
以下是引用不以物喜在2007-8-3 17:11:31的发言:

什么意思?
难道不是一个程序只有一个栈吗?
请讲详细点阿
。。。

系统给一个程序分配的内存空间并不是连续的
举个例子
int a=1;
int b=2;
那么a b 这两个数据存放的地址是毫无关联的

你可以去实验下

2007-08-03 17:26
不以物喜
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2007-8-1
收藏
得分:0 
连续着呢。。。

2007-08-03 17:31
aipb2007
Rank: 8Rank: 8
来 自:CQU
等 级:贵宾
威 望:40
帖 子:2879
专家分:7
注 册:2007-3-18
收藏
得分:0 
ls正确,int a,int b。
这样系统分配给ab时,不一定占有连续内存,这里可能有,但是仅仅巧合。


连续的分配内存,就用数组。

Fight  to win  or  die...
2007-08-03 17:32
不以物喜
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2007-8-1
收藏
得分:0 
即使不连续,按我自己的理解,a和d的地址不应该差那么大吧?

2007-08-03 17:36
不以物喜
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2007-8-1
收藏
得分:0 
执行的时候,d先入栈,然后pc,sr,bp,然后是StackTest()函数的局部变量b,a,ptr,c,但为什么a和d的在栈中的地址相差那么大呢(92)?

2007-08-03 17:39
bupthehe
Rank: 1
等 级:新手上路
帖 子:61
专家分:0
注 册:2007-8-2
收藏
得分:0 
以下是引用不以物喜在2007-8-3 17:39:09的发言:
执行的时候,d先入栈,然后pc,sr,bp,然后是StackTest()函数的局部变量b,a,ptr,c,但为什么a和d的在栈中的地址相差那么大呢(92)?

你的这个不是栈吧?

2007-08-03 17:49
不以物喜
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2007-8-1
收藏
得分:0 
执行的时候,d先入栈,然后IP,SR,BP,然后是StackTest()函数的局部变量b,a,ptr,c,但为什么a和d的在栈中的地址相差那么大呢(92)?
是栈阿


2007-08-03 19:02
快速回复:[求助]栈的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.019044 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved