草庐IT

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

我的静态链接VisualC++2012程序偶尔会生成CRTL错误:“R6016-线程数据空间不足”。Microsoft的最小文档说此错误消息是在生成新线程时生成的,但没有为其分配足够的内存。但是,我的代码仅在几个明确定义的情况下显式生成新线程,而这两种情况均未在此处发生(尽管Microsoft库肯定会在内部生成线程)。当程序刚刚在后台运行时,一位用户报告了这个问题。不确定它是否相关,但我没有覆盖默认的1MB保留堆栈大小或堆大小,而且我的程序使用的总内存通常很小(在具有12GB实际RAM的系统上为3MB-10MB,其中一半以上未分配)。这种情况很少发生(所以我无法追踪),而且不止一台机器

c++ - 多线程应用程序在内存使用率高时崩溃并出现错误 R6016 或 0xC0000005

这是基于控制台的多线程应用程序,使用WindowsXP上的MSVC2010以C++开发。应用程序消耗大量内存。但是当内存使用量达到2GB左右(Windows32位内存限制)时,它会在随机位置突然崩溃并出现以下任一错误:R6016-notenoughspaceforthreaddata0xC0000005:Accessviolationreadinglocation0x02030000伴随着这个,还有一个字符串多次出现在控制台“runtimeerror”上。但不确定它来自哪里(我的代码不打印它)。不幸的是,没有明确的堆栈跟踪或崩溃的可用位置。它会在任何地方崩溃,尤其是当内存使用量达到2G