0

我在这个函数中遇到了一个分段错误,但不知道它做了什么,为什么会出现分段错误,甚至我的代码在哪里调用它。

任何人都可以解释一下吗?Windows 中使用 Netbeans IDE 和 MinGW 工具链的 C 代码。


[更新] 通常,我会按照@JoachimPileborg 的建议进行操作,但是当发生分段错误时,调用堆栈不包含我的代码。事实上,它读

ntdll!TpCallbackMayRunLong ()
?? ()
ntdll!TpCallbackMayRunLong ()
?? ()

而那些?? ()评估为零!

我想,从名称上看,它TpCallbackMayRunLong()是在空闲时间由系统调用的,当然不是从我的代码中调用的。

4

2 回答 2

0

我从来没有发现是什么原因造成的,但是从函数的名称中我猜它不喜欢我的阻塞等待(timeout = zer0),所以我将超时设置为 20 秒,它工作得很好。

我知道发送方会不断传输,20 秒刚好够同步发送方和接收方的启动。ymmv

于 2013-03-20T01:49:44.120 回答
0

TpCallbackMayRunLong当您使用删除关键部分DeleteCriticalSection然后尝试在已删除的关键部分上调用EnterCriticalSection或时调用LeaveCriticalSection

其他事情可能会导致相同的错误,但我发现这是我的情况的原因。

于 2013-04-02T16:05:34.717 回答