我正在开发一个使用多个库(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) );
}
但仅在 Debug模式下,在发布时它不会给出错误并且运行良好。即使我将代码放在 block 中以使其永远不会运行,也会出现此错误。
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 的调试似乎真的很慢 在 compile-to-runDebug 滞后后延迟 1 分钟,然后当调试程序退出时,再延迟 1 分钟到 再次控制 Visual Studio 。我确实清理了所有东西,但没有快乐。
解决方案:我手动删除了项目/解决方案中的大型 *.sdf 和 *.suo 文件并重新构建。问题神奇地消失了。
不知道为什么,但有些东西不同步、损坏或与更新不兼容,需要手动清除。
关于c++ - Visual Studio 报告的堆错误,但仅在 Debug模式下,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10436391/