我正在开发一个使用多个库(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);
}
谁能慢慢解释发生了什么,或者指向一个链接来修复它。