QQ登录

只需一步,快速开始

登录 | 立即注册 | 找回密码

熊天琪游戏论坛 - 玩出名堂

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 42|回复: 0

[文本教程] 相同的程序,每次运行时,栈都是从同一个地址开始的吗?解决办法

[复制链接]
发表于 2018-3-13 02:07:09 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
相同的程序,每次运行时,栈都是从同一个地址开始的吗?
估计我没有说清楚..
是这样的      有下面一个程序
//sp.c
  
unsigned   long   find_sp(void){
       __asm__( "movl   %esp,   %eax ");
}
int   main(int   argc,char*   argv[]){
char*   buff;
int         len;
long   sp;
len=atoi(argv[1]);
buff=malloc(len);
sp=find_sp();
printf( "sp   is   0x%x\n ",sp);
free(buff);
exit(0);
  
}
  
然后我每次运行   ,输入相同的参数   然而输出的结果每次都不同
  
比如   
./sp   300
  
请问是怎么回事呢

------最佳解决方法--------------------
哥们对不起了。我还没有对这方面下功夫
------最佳解决方法--------------------
堆栈是程序加载的时候由操作系统初始化的,每次应该不同。
------最佳解决方法--------------------
对OSd: stack应该每次都不一样的内存地址,不过对于每个进程空间来说,它的起初位置是一样的,从0x0开始
------最佳解决方法--------------------
知道这个有意义吗?向你学习中。。。
------最佳解决方法--------------------
mark……
------最佳解决方法--------------------
挺奇怪
感觉应该是相同的</p>[table=98%][/table]
熊天琪的论坛真是太好啦, 我太喜欢熊天琪啦
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Loading...

QQ|小黑屋|Archiver|手机版|熊天琪 ( 鄂ICP备14006674号,鄂公网安备42020502000003号 

安全联盟

GMT+8, 2018-12-15 12:47 , Processed in 0.090658 second(s), 27 queries .

Powered by Discuz! X3.2 Licensed

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表