char * 强制类型转换
[root@templateTest tmp]# gdb ./a.outGNU gdb (GDB) Red Hat Enterprise Linux (7.0.1-23.el5)Copyright (C) 2009 Free Software Foundation, Inc.License GPLv3+: GNU GPL version 3 or laterThis is fre
·
[root@templateTest tmp]# gdb ./a.out
GNU gdb (GDB) Red Hat Enterprise Linux (7.0.1-23.el5)
Copyright (C) 2009 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "i386-redhat-linux-gnu".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>...
Reading symbols from /tmp/a.out...done.
(gdb) l
1 #include<stdio.h>
2 #include<stdlib.h>
3 int main(){
4 char usPort = 5;
5 char * a;
6 a=(char *)usPort;
7
8 return;
9 }
(gdb) b 6
Breakpoint 1 at 0x8048369: file 123.c, line 6.
(gdb) r
Starting program: /tmp/a.out
Breakpoint 1, main () at 123.c:6
6 a=(char *)usPort;
(gdb) p a
$1 = 0x211600 "U\211\345WVS\350\260x"
(gdb) p usPort
$2 = 5 '\005'
(gdb) p (char)usPort
$3 = 5 '\005'
(gdb) p (char *)usPort
$4 = 0x5 <Address 0x5 out of bounds>
(gdb) p (char *)21
$5 = 0x15 <Address 0x15 out of bounds> //直接将21转换成地址了
(gdb) q
A debugging session is active.
Inferior 1 [process 6762] will be killed.
Quit anyway? (y or n) y
[root@templateTest tmp]#
GNU gdb (GDB) Red Hat Enterprise Linux (7.0.1-23.el5)
Copyright (C) 2009 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "i386-redhat-linux-gnu".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>...
Reading symbols from /tmp/a.out...done.
(gdb) l
1 #include<stdio.h>
2 #include<stdlib.h>
3 int main(){
4 char usPort = 5;
5 char * a;
6 a=(char *)usPort;
7
8 return;
9 }
(gdb) b 6
Breakpoint 1 at 0x8048369: file 123.c, line 6.
(gdb) r
Starting program: /tmp/a.out
Breakpoint 1, main () at 123.c:6
6 a=(char *)usPort;
(gdb) p a
$1 = 0x211600 "U\211\345WVS\350\260x"
(gdb) p usPort
$2 = 5 '\005'
(gdb) p (char)usPort
$3 = 5 '\005'
(gdb) p (char *)usPort
$4 = 0x5 <Address 0x5 out of bounds>
(gdb) p (char *)21
$5 = 0x15 <Address 0x15 out of bounds> //直接将21转换成地址了
(gdb) q
A debugging session is active.
Inferior 1 [process 6762] will be killed.
Quit anyway? (y or n) y
[root@templateTest tmp]#
更多推荐
已为社区贡献1条内容
所有评论(0)