ГБД: Почему я не могу напечатать это? - PullRequest
0 голосов
/ 05 апреля 2011
(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

Я ожидаю 4 в sz, почему это получается как 0?

1 Ответ

2 голосов
/ 05 апреля 2011

Я не уверен, почему вы ожидаете 4.Вы получаете 5 от strlen(argv[1]), потому что hello имеет 5 символов.И затем вы добавляете 1 к нему, поэтому ответ 6 .

sz = strlen(argv[1]) + 1; // 5 + 1 = 6
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...