セグメンテーション違反をデバッグしようとしていますが、gdb から次の出力が得られます。
(gdb) n
Program received signal SIGSEGV, Segmentation fault.
0x08048af9 in parse_option_list (ptr=0x6f72505f <Address 0x6f72505f out of bounds>, box_name=0x696d6978 <Address 0x696d6978 out of bounds>, option_list=0x313a7974,
num_elements=0x33313532) at submit.c:125
125 memcpy(&(option_list[(*num_elements)].value), value, 24);
(gdb) p num_elements
$15 = (int *) 0x33313532
(gdb) p *num_elements
Cannot access memory at address 0x33313532
(gdb)
memcpy() の何かがおかしくなっているように見えます。しかし、その行は非常に多くの変数を参照しているため、正確に何が問題なのかわかりません。
誰かが0x8048af9 in parse_option_list...
行が私に言っていることを理解するのを助けることができますか?
私の関数の署名は次のとおりです。
int parse_option_list(char *ptr, char *box_name,
struct option_list_values *option_list, int *num_elements)
そして、これは役に立つかもしれません:
struct option_list_values {
char value[24];
char name[24];
};
また、変数value
およびname
は segfaulting ではありません (ただし、そう思われる場合は、それらの値を設定するコードを投稿できます)。ありがとうございました!