首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 操作系统 > UNIXLINUX >

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

2012-03-09 
相同的程序,每次运行时,栈都是从同一个地址开始的吗?估计我没有说清楚..是这样的有下面一个程序//sp.cunsi

相同的程序,每次运行时,栈都是从同一个地址开始的吗?
估计我没有说清楚..
是这样的     有下面一个程序
//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……
[解决办法]
挺奇怪
感觉应该是相同的

热点排行