windows - 解决错误 R6016 - 线程数据空间不足

标签 windows multithreading visual-c++-2012

我的静态链接 Visual C++ 2012 程序偶尔会生成 CRTL 错误:“R6016 - 线程数据空间不足”。

Microsoft 的最小文档说此错误消息是在生成新线程时生成的,但没有为其分配足够的内存。

但是,我的代码仅在几个明确定义的情况下显式生成新线程,而这两种情况均未在此处发生(尽管 Microsoft 库肯定会在内部生成线程)。当程序刚刚在后台运行时,一位用户报告了这个问题。

不确定它是否相关,但我没有覆盖默认的 1MB 保留堆栈大小或堆大小,而且我的程序使用的总内存通常很小(在具有 12GB 实际 RAM 的系统上为 3MB-10MB,其中一半以上未分配)。

这种情况很少发生(所以我无法追踪),而且不止一台机器上都报告过这种情况。我只在 Windows 8.1 上听说过这个,但我不会读太多。

某处是否有一些编译器设置可能会影响此错误?还是编程错误?

最佳答案

原来这是调用CreateThread而不是_beginthread引起的。备注部分中的 Microsoft 文档指出 CreateThread causes conflicts when using the CRT library ,事实上,一旦我们进行了更改,我们就再也没有看到该错误。

关于windows - 解决错误 R6016 - 线程数据空间不足,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21127460/

相关文章:

c - C 中的队列套接字连接

c++ - OpenGL 多线程/共享上下文和 glGenBuffers

c++ - 在 C++ 中绕过 operator new 的重写

windows - 我可以在 Windows 8.1 设备上开发 Windows 10 应用程序吗?

windows - 为什么Delphi主窗体WindowState在窗口最小化时返回 "wsNormal"?

python - 如何在 Windows 下将链接拖动到 PyGTK 应用程序?

c++ - 无法使用 BitScanForward64

c++ - Windows.h - 焦点进入文本输入时的通知

ios - CFRunLoopPerformBlock 与 dispatch_async

c++ - 我应该在我的类中的 std::vector 成员变量中使用 std::unique_ptr<T> 吗?