最後のケースで奇妙なセグメンテーション違反が発生しています。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 ==