gcc编译器NULL分配不分配NULL

时间:2019-01-13 01:21:46

标签: linux gcc mingw-w64

我正在调试其他人的库(AGAR),遇到一种情况,即在紧随其后的代码行上为指针分配的NULL值不是NULL。

非NULL值导致段错误!

我在代码中看不到问题。

    int AG_EventLoop(void)
    {
        AG_EventSource *src = AG_GetEventSource();
        AG_EventSink *es;
...
            for((es) = ((&src->epilogues)->tqh_first); (es) != NULL; (es) = ((es)->sinks.tqe_next)) {
                es->fn(es, &es->fnArgs);  // seg fault here should not have entered
            }
...
     }

在for循环中,为es分配了队列中的第一项:

(es) = ((&src->epilogues)->tqh_first);

调试器显示值:

src->epilogues: 0x1bbd28
  tqh_first: 0x0
  tqh_last: 0x1bbd28
es: 0xfeeefeeefeeefeee

如果tqh_first为0x0(NULL),则来自es的值为0xfeeefeeefeeefeee?

该代码仅在MINGW64中失败,并在Linux中按预期工作。

0 个答案:

没有答案