我在最后一个案例中遇到了一个奇怪的段错误。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== 由 0x5EF2BDD: vfprintf (vfprintf.c:1316)
==19994== 由 0x5EFD836: fprintf (fprintf.c:33)
==19994== 由 0x5E95E9: ...
==19994== 地址 0x4 没有被堆栈、malloc 或(最近)释放
==19994==