Visual Studio 报告的堆错误,但仅在调试模式下
Heap error reported by Visual Studio, but only in debug mode
我正在开发一个使用多个库(SDL,Boost,花栗鼠,Lua,Glew)的大型程序
每当我将此代码添加到构造函数中的某个类时。
std::ifstream is;
is.open ("Sprites/spriteList.json");// Causes Error
boost::property_tree::ptree pt;
boost::property_tree::json_parser::read_json(is,pt);// Causes Error
Visual Studio 创建指向此代码的错误堆错误。
extern "C" _CRTIMP int __cdecl _CrtIsValidHeapPointer(
const void * pUserData
)
{
if (!pUserData)
return FALSE;
if (!_CrtIsValidPointer(pHdr(pUserData), sizeof(_CrtMemBlockHeader), FALSE))
return FALSE;
return HeapValidate( _crtheap, 0, pHdr(pUserData) );
}
但仅在调试模式下,在发布时它不会给出错误并且运行良好。即使我将代码放在一个块中,它也会出现此错误,因此它永远不会运行。
if (false) {
std::ifstream is;
is.open ("Sprites/spriteList.json");
boost::property_tree::ptree pt;
boost::property_tree::json_parser::read_json(is,pt);
}
谁能慢慢解释发生了什么,或者指出我一个链接来修复它。
我最近做了一个winupdate(20120508),之后Visual studio 2010似乎调试得很慢在编译到运行调试滞后延迟 1 分钟,然后在调试程序退出时,再延迟 1 分钟再次获得Visual Studio的控制权。我确实清理了所有的东西,但没有快乐。
解决方案:我手动删除了项目/解决方案中的大 *.sdf 和 *.suo 文件并重新生成。问题神奇地消失了。
不知道为什么,但是有些东西不同步,损坏或与更新不兼容,需要手动吹走。
相关文章:
- 为什么使用__LINE_的代码在发布模式下在MSVC下编译,而不是在调试模式下
- 在调试模式下引发C++ "deque iterator not dereferencable"异常
- _mm256_load_ps调试模式下导致谷歌/基准测试的分段错误
- Visual Studio 发布模式阻止在调试模式下执行的代码.使用 WinHTTP 和多线程
- 自定义内存管理器在发布模式下工作正常,但在调试模式下则不然
- 使用Qt Creator在调试模式下编译一段代码
- 在调试模式下,所有程序都运行良好,但在发布模式下,我在cudaMalloc操作中出错
- 在类声明中初始化 const 成员变量时在调试模式下出现异常
- 在调试模式下编译时qrc_resource.cpp错误
- 如何在调试模式下通过终端运行可执行的 c++?
- 在Visual Studio 2017上无法使用调试模式x64进行OpenCV3.2编译
- 在调试模式下使用英特尔 TBB
- 我的代码在发布模式下不起作用,而在Qt的调试模式下工作
- SCANF 在 Eclipse 中不接受调试模式下的输入?
- 为什么我的 UWP 游戏在发布时比在调试模式下慢
- 未处于调试模式时正常启动测试
- 我如何调用在调试模式下具有主要的程序或代码
- 在CLION中调试模式和运行模式之间的怪异结果
- 调试模式下的dlib静态lib错误
- ifstream读取二进制文件在发行模式下工作,但在调试模式下不使用