void指针条件提升段错误

Rio*_*Rio 1 c c99 void-pointers

当我们处理前一个或下一个为null的指针时,我正在使用双链表并获得有关边缘情况的奇怪性能.GDB返回以下错误:

Program received signal SIGSEGV, Segmentation fault.
0x0804a9c1 in DLinkDelete (delete=0xd8c9d33c) at test.c:213
213             if (prevdl && prevdl->next) 
(gdb) p prevdl
$39 = (DoubleLink *) 0xdadadada
(gdb) p prevdl->next
$40 = (void *) 0x0
Run Code Online (Sandbox Code Playgroud)

DoubleLink是一个具有以下格式的结构:

typedef struct
{
    void *next;
    void *prev;
} DoubleLink;
Run Code Online (Sandbox Code Playgroud)

为什么会出现分段错误?

cni*_*tar 5

大概prevdl指向无效的记忆?来吧,0xdadadada看起来真的像是一个有效的地址吗?" 精神分裂症过于愚蠢 ".