内存地址空间与十六进制。
1应用场景:pamp
在gdb 或者pmap查看内容的时候经常出现 如下 0x8462960,0x8462960含义是啥
例如
wang@ubuntu:~/study/code$ pmap -d 1468 >>aaa
wang@ubuntu:~/study/code$ vi aaa
1468: ./server
Address Kbytes Mode Offset Device Mapping
00110000 116 r-x-- 0000000000000000 008:00001 libgcc_s.so.1
0012d000 4 r---- 000000000001c000 008:00001 libgcc_s.so.1
0012e000 4 rw--- 000000000001d000 008:00001 libgcc_s.so.1
00142000 1380 r-x-- 0000000000000000 008:00001 libc-2.11.1.so
0029b000 8 r---- 0000000000159000 008:00001 libc-2.11.1.so
0029d000 4 rw--- 000000000015b000 008:00001 libc-2.11.1.s
0x8462960 是 内存地址空间是.
十六进制的表示:
C语言、Shell、Python语言及其他相近的语言使用字首“0x”,例如“0x5A3”。开头的“0”令解析器更易辨认数,而“x”则代表十六进制(就如“O”代表八进制)。在“0x”中的“x”可以大写或小写,0-9对应0-9;A-F对应10-15;N进制的数可以用0---(N-1)的数表示超过9的用字母A-F。
2 具体说明:内存地址空间为何用十六进制表示
编程中,我们常用的还是10进制.毕竟C/C++是高级语言。
比如:int a = 100,b = 99;
不过,由于数据在计算机中的表示,最终以二进制的形式存在,所以有时候使用二进制,可以更直观地解决 问题。但二进制数太长了。比如int 类型占用4个字节,32位。比如100,用int类型的二进制数表达将是:
0000 0000 0000 0000 0110 0100
面对这么长的数进行思考或操作,没有人会喜欢。因此,C,C++ 没有提供在代码直接写二进制数的方法。用16进制或8进制可以解决这个问题。因为,进制越大,数的表达长度也就越短。
参考:
http://www.cnblogs.com/liuzhendong/archive/2011/10/17/2215632.html
十六进制
http://baike.baidu.com/view/230306.htm
理解C指针: 一个内存地址对应着一个值
http://www.cppblog.com/hex108/archive/2011/06/18/124234.html