我有c ++代码,它使用QueueUserWorkItem来调用一个函数,该函数来自调用winsock accept的包装类。这在调试中工作正常,如果我使用Dependency Walker中的Start Profile选项运行发行版可执行文件,它也可以工作。但是,如果我正常运行发行版可执行文件,它会在对QueueUserWorkItem的调用时崩溃。一旦它调用该函数,应用程序就会退出。执行永远不会到达我传递给QueueUserWorkItem的函数,但是函数指针是有效的。
有没有人知道任何可能导致QueueUserWorkItem在发布模式下崩溃而不是调试的东西?
答案 0 :(得分:1)
是否有人知道任何可能导致
<random function>
在发布模式下崩溃而不是调试的内容?
是的,缓冲区溢出。调试版本在它们周围放置了可以覆盖的防护,但在发布模式下,你可能会覆盖重要的内存。