设为首页
收藏本站
用户名
Email
自动登录
找回密码
密码
登录
注册
快捷导航
平台
Portal
论坛
BBS
文库
项目
群组
Group
我的博客
Space
搜索
搜索
热搜:
shell
linux
mysql
本版
用户
LinuxSir.cn,穿越时空的Linuxsir!
»
论坛
›
编程开发讨论区 —— LinuxSir.cn
›
Linux 程序设计专题讨论
›
进程segment地址高低问题
返回列表
查看:
950
|
回复:
6
进程segment地址高低问题
[复制链接]
zkeey
zkeey
当前离线
积分
37
IP卡
狗仔卡
发表于 2008-10-24 09:10:52
|
显示全部楼层
|
阅读模式
有一点一直不明白,为什么我输出的进程的各个段的一些变量的地址的长度不同呢。
比如变量a在stack segment,它的地址一般很长0x7fffc0aaadbc,
而同一个进程的text segment地址却是0x4005e8
不知道看什么书能找到答案。找了一些虚拟内存映射的文章,可是都说的是理论,很含糊。
希望有人给我解释一下,谢谢!
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
显身卡
khc
khc
当前离线
积分
116
IP卡
狗仔卡
发表于 2008-10-24 13:20:22
|
显示全部楼层
這跟进程沒關係,stack 是由上至下的,所以在 64 位元下便有一個大於 2^32 的地址
回复
支持
反对
使用道具
举报
显身卡
zkeey
zkeey
当前离线
积分
37
IP卡
狗仔卡
楼主
|
发表于 2008-10-24 14:38:53
|
显示全部楼层
Post by
khc;1898591
這跟进程沒關係,stack 是由上至下的,所以在 64 位元下便有一個大於 2^32 的地址
在64位系统中,为什么栈指针的长度比代码段指针的长度长呢?我的是amd64
回复
支持
反对
使用道具
举报
显身卡
zhangxudong
zhangxudong
当前离线
积分
511
IP卡
狗仔卡
发表于 2008-10-24 17:03:31
|
显示全部楼层
每个进程都有自己的虚拟地址,从0x00000000 00000000 到 0x00007fff ffffff,代码段从0x400000开始,堆栈从0x80000000000往下增长。
回复
支持
反对
使用道具
举报
显身卡
zhangxudong
zhangxudong
当前离线
积分
511
IP卡
狗仔卡
发表于 2008-10-24 17:05:33
|
显示全部楼层
试试下面代码
#include <stdio.h>
int main( int argc, char *argv[] )
{
int a, b;
printf( "argv: %X, main: %X.\n", &a, main );
}
回复
支持
反对
使用道具
举报
显身卡
hanchao3c
hanchao3c
当前离线
积分
91
IP卡
狗仔卡
发表于 2008-10-24 23:19:19
|
显示全部楼层
并不是栈的地址长,只是代码段没有用到64位
回复
支持
反对
使用道具
举报
显身卡
zkeey
zkeey
当前离线
积分
37
IP卡
狗仔卡
楼主
|
发表于 2008-10-27 11:59:38
|
显示全部楼层
感谢zhangxudong和 hanchao3c
我现在已经明白了差不多了。是%p格式不会将前面的0000显示出来。
回复
支持
反对
使用道具
举报
显身卡
返回列表
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
注册
本版积分规则
发表回复
回帖后跳转到最后一页
Copyright © 2002-2023
LinuxSir.cn
(http://www.linuxsir.cn/) 版权所有 All Rights Reserved.
Powered by
RedflagLinux!
技术支持:
中科红旗
|
京ICP备19024520号
快速回复
返回顶部
返回列表