(gdb) print argv[1]
$5 = 0xbffffb1d "hello"
(gdb) step
21 sz = strlen(argv[1]) + 1;
(gdb) print sz
$6 = 0
(gdb) printf "%s", sz
Cannot access memory at address 0x0
(gdb) printf "%i", sz
0
我期待sz
中有4个,为什么它会以0
形式出现?
答案 0 :(得分:2)
我不确定你为什么期待4
。您从5
获得strlen(argv[1])
,因为hello
有5个字符。然后你要添加1
,这就是 6 的答案。
sz = strlen(argv[1]) + 1; // 5 + 1 = 6