2011-03-29 52 views
0

我有C++代码,它使用QueueUserWorkItem来调用从调用winsock接受的包装类的函数。这在调试中可以正常工作,如果我使用Dependency Walker的启动配置文件选项运行发布可执行文件,它也可以工作。但是,如果我正常运行发行版可执行文件,它会在对QueueUserWorkItem的调用中崩溃。只要它调用该函数,应用程序就会退出。执行永远不会到达我传入QueueUserWorkItem的函数,但函数指针是有效的。Windows QueueUserWorkItem C++发布模式问题

有没有人知道任何可能导致QueueUserWorkItem在发布模式下崩溃而不是调试?

+0

涉及QUWI并受工具影响的碰撞通常是由穿线比赛引起的。改变的时间可以触发他们。 – 2011-03-29 21:03:49

回答

1

有没有人知道任何可能导致<random function>在发布模式下崩溃但无法调试的任何内容?

是的,缓冲区溢出。调试版本有放在他们周围的守卫,你可以覆盖,但在释放模式下,你可能覆盖重要的记忆。

+1

是的,除其他外...“生存版本”是一个常见的参考:http://www.codeproject.com/KB/debug/survivereleasever.aspx – ildjarn 2011-03-29 19:43:36