2

最後のケースで奇妙なセグメンテーション違反が発生しています。Valgringは違法な​​メモリアクセスを述べています

    fprintf(stderr, "Print %s \n", primary_key->name);
    fprintf(stderr, "Print %s \n", table->table);
    fprintf(stderr, "Print %s \n ", db->table); 

    fprintf(stderr, "Print %s\\%s \n", db->table, table->table);

最初の3つのステートメントは完全に機能しますが、2つに一緒にアクセスしようとすると、セグメンテーション違反が発生します。何かご意見は?(これは実際のコードであり、間には何もありません)私はCを初めて使用するので、fprintfがどのように機能するかを必ずしも詳細に知る必要はありません。

valgrindエラーは次のとおりです。

Print 345 Print foo Print test

==19994==サイズ1の読み取りが無効です

== 19994 == 0x5EF53B1:vfprintf(vfprintf.c:1630)

== 19994 == by 0x5EF81A3:buffered_vfprintf(vfprintf.c:2313)

== 19994 == by 0x5EF2BDD:vfprintf(vfprintf.c:1316)

== 19994 == by 0x5EFD836:fprintf(fprintf.c:33)

== 19994 == by 0x5E95E9:..。

== 19994 ==アドレス0x4はスタック、malloc、または(最近)フリーではありません

== 19994 ==

4

0 に答える 0