我在最后一个案例中遇到了一个奇怪的段错误。 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个语句完全正常,但是一旦我尝试访问这两个语句,我就会遇到段错误。有什么想法吗? (这是实际代码,两者之间没有任何内容)我是C的新手,所以不必详细了解fprintf的工作原理。
valgrind错误是:
打印345 打印foo 打印测试
== 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'd或(最近)免费
== 19994 ==