GDB:为什么我不能打印这个?

发布于 2024-10-29 21:28:01 字数 271 浏览 0 评论 0原文

(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

(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

I am expecting 4 in sz, why is it coming out as 0?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

帥小哥 2024-11-05 21:28:01

我不确定您为什么期待 4。您可以从 strlen(argv[1]) 得到 5,因为 hello 有 5 个字符。然后向其中添加 1,这就是答案为 6 的原因。

sz = strlen(argv[1]) + 1; // 5 + 1 = 6

I am not sure why you are expecting 4. You get 5 from strlen(argv[1]) because hello has 5 characters. And then you are adding 1 to it which is why the answer is 6.

sz = strlen(argv[1]) + 1; // 5 + 1 = 6
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文