【发布时间】:2013-01-01 22:36:45
【问题描述】:
我有一些 c 代码来连接一个字符串。
char str_cat[strlen(str1) + strlen(str2) + 1];
如何在 gdb 中检查 str_cat 的大小?现在它报告 0:
print sizeof(str_cat)
它确实打印了字符串,但我如何打印它以显示空字符?
让我改写一下,我如何验证 str_cat 的大小是否合适并且有足够的空间?
【问题讨论】:
-
隐含终止 NUL。它不会自动打印它。如果您非常想要它,您可以将
theString[strlen(theString)]打印为整数。应该是0。 -
它不会显示空字符,因为空字符看起来不像任何东西。 str_cat 是一个函数吗?它不应该是 char * 在这种情况下 sizeof 不会工作,因为它只会返回指针的大小吗?
-
@Ben
str_cat是char的数组。如果调试器知道它是一个数组,那么它将正确显示大小。 -
str_cat是可变长度数组。显然gdb不知道如何处理 VLA。 -
抱歉,我不明白,您是在声明一个深度基于 strlen(运行时间)的字符数组(代码时间)?