Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/138.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ TinyXML seg故障_C++_Tinyxml - Fatal编程技术网

C++ TinyXML seg故障

C++ TinyXML seg故障,c++,tinyxml,C++,Tinyxml,tinyXML是否存在任何固有的内存泄漏问题?我不知道为什么我会有这种奇怪的seg故障。 在下面的函数中,每当我试图增加元素名(“Connecor”和“laneFro”)的大小时,下面的if子句(在循环中)就会导致程序崩溃 void WriteXMLInput_Node_Connectors(Node* node,TiXmlElement * Node_) { std::ostringstream out; TiXmlElement * Connectors = new TiXm

tinyXML是否存在任何固有的内存泄漏问题?我不知道为什么我会有这种奇怪的seg故障。 在下面的函数中,每当我试图增加元素名(“Connecor”和“laneFro”)的大小时,下面的if子句(在循环中)就会导致程序崩溃

void WriteXMLInput_Node_Connectors(Node* node,TiXmlElement * Node_)
{
    std::ostringstream out;
    TiXmlElement * Connectors = new TiXmlElement("Connectors"); Node_->LinkEndChild(Connectors);
    TiXmlElement * Connector;
    TiXmlElement * laneFrom;
    TiXmlElement * laneTo;

    for(std::map<const sim_mob::Lane*, sim_mob::Lane* >::const_iterator it = node->getConnectors().begin();it != (node->getConnectors().end()); it++)
    {
        Connector = new TiXmlElement("Connecor"); Connectors->LinkEndChild(Connector);
        laneFrom = new TiXmlElement("laneFro"); Connector->LinkEndChild(laneFrom);
//      laneTo = new TiXmlElement("laneTo"); Connector->LinkEndChild(laneTo);
        if(42792 == node->getID())
        {
            std::cout << "uninode " ;
            std::cout << uninode->getID();
            std::cout << " from: " << (*it).first << " ";
            std::cout << (*it).first->getLaneID_str();
            std::cout << "uninode " << uninode->getID() << " To: " << (*it).second->getLaneID_str();

    }
}
void WriteXMLInput\u Node\u连接器(Node*Node,tixmlement*Node)
{
std::ostringstream out;
TiXmlElement*连接器=新的TiXmlElement(“连接器”);节点->LinkedChild(连接器);
TiXmlElement*连接器;
TiXmlElement*laneFrom;
TiXmlElement*laneTo;
对于(std::map::const_迭代器it=node->getConnectors().begin();it!=(node->getConnectors().end());it++)
{
连接器=新的TiXmlElement(“Connecor”);连接器->LinkedChild(连接器);
laneFrom=新的TiXmlElement(“laneFro”);连接器->链接子节点(laneFrom);
//laneTo=新的TiXmlElement(“laneTo”);连接器->链接子对象(laneTo);
if(42792==node->getID())
{

std::您是否可以在调试器中检查(例如)所有指针是否有效?什么是
getConnectors()
返回的、引用还是值?如果是值,
begin()
end()
将引用不同的容器。@JoachimPileborg是的,事实上,如果我删除tinyxml,它们可以正常工作instructions@BoPersson哇!这个函数是用来提供引用的,但我错过了函数的声明和定义中的&in。我修改了这个函数,现在程序可以运行了。我不明白它是如何关联的?!@rahman-您不是第一个执行此操作的人。:-)如果按值返回,则每次都会得到一个新副本,因此
begin()
end()
属于不同的容器,并且
it
可能永远不会结束。