我正在开发一个使用多个库的大型程序(SDL,Boost,Chipmunk,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);
}
任何人都可以慢慢解释发生了什么,或者指向我修复它的链接。
答案 0 :(得分:0)
我最近做了一个winupdate(20120508),Visual Studio 2010之后的调试似乎很慢 编译到runDebug后延迟1分钟,然后当调试程序退出时,再延迟1分钟 再次控制视觉工作室。我干净利落,但没有快乐。
解决方案:我手动删除了项目/解决方案中的大* .sdf和* .suo文件并重建。问题神奇地消失了。
不确定原因,但某些内容不同步,损坏或与更新不兼容,需要手动吹走。