2

文字列を連結するためのcコードがいくつかあります。

char str_cat[strlen(str1) + strlen(str2) + 1];

gdbでstr_catのsizeofを確認するにはどうすればよいですか?現在、次のように0を報告します。

print sizeof(str_cat)

文字列は印刷されますが、ヌル文字を表示して印刷するにはどうすればよいですか?

言い換えると、str_catが適切なサイズであり、十分なスペースがあることを確認するにはどうすればよいですか?

4

2 に答える 2

4

char str_cat[strlen(str1) + strlen(str2) + 1];

gdb で str_cat のサイズを確認するにはどうすればよいですか? 現在、次のように 0 が報告されています。

str_cat可変長配列です。どうやらgdb可変長配列を扱う方法はありません。

この問題に関するオープン チケットがここにあります: http://sourceware.org/bugzilla/show_bug.cgi?id=9663

既存のパッチについて言及していますが、少なくとも私の2012バージョン7.4の にgdbは含まれていません。

于 2013-01-01T23:01:05.510 に答える
0

GDB のバグを回避するには、最初にサイズを別の変数に保存する、後で別の変数にサイズを保存します。次に例を示します。

int len = strlen(str1) + strlen(str2) + 1;
char str_cat[len];

また

char str_cat[strlen(str1) + strlen(str2) + 1;
size_t len = sizeof str_cat;

len次に、GDBで印刷します。

于 2013-01-02T03:24:25.070 に答える