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 个语句工作得非常好,但是当我尝试同时访问这两个语句时,我得到了一个段错误。有什么想法吗?(这是实际代码,中间没有任何内容)我是 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==

4

0 回答 0