2

我正在开发一个使用多个库(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);
}

谁能慢慢解释发生了什么,或者指向一个链接来修复它。

4

1 回答 1

0

我最近做了一个 winupdate(20120508) 并且 Visual Studio 2010 之后调试似乎真的很慢,在 compile-to-runDebug 滞后后延迟了 1 分钟,然后当调试程序退出时,又延迟了 1 分钟才能再次控制 Visual Studio . 我确实清理了所有东西,但没有快乐。

解决方案:我手动删除了我的项目/解决方案中的大 *.sdf 和 *.suo 文件并重新构建。问题神奇地消失了。

不知道为什么,但有些东西不同步、损坏或与更新不兼容,需要手动清除。

于 2012-05-09T18:55:13.833 回答