C++ 调用需要引用向量的函数时发生崩溃

C++ 调用需要引用向量的函数时发生崩溃,c++,stl,C++,Stl,我想知道下面的例子中,将向量引用传递给函数是否有错误。这段代码运行得很好。但我的项目中的同一类型代码让我崩溃。我不知道为什么 在这种情况下,每当我调用需要std::vector&的函数时。然后在被调用的函数中,向量的大小达到百万分之一。。。。我已经附上了截图,我实际上是得到这个崩溃。 我只是想知道这些类型的实现中是否存在错误 #include <iostream> #include <vector> #include <string> class A { p

我想知道下面的例子中,将向量引用传递给函数是否有错误。这段代码运行得很好。但我的项目中的同一类型代码让我崩溃。我不知道为什么

在这种情况下,每当我调用需要std::vector&的函数时。然后在被调用的函数中,向量的大小达到百万分之一。。。。我已经附上了截图,我实际上是得到这个崩溃。 我只是想知道这些类型的实现中是否存在错误

#include <iostream>
#include <vector>
#include <string>

class A {
public:
    A() {}
    ~A() {}
    void GetVector(std::vector<std::wstring> &in) {
        std::wstring s = L"Hello";
        for(int i = 0; i < 10; i++)
            in.push_back(s);
    }
};

class B {
public:
    B() {}
    ~B() {}

    void GetData() {
        A a;
        std::vector<std::wstring> s;
        a.GetVector(s);
    }
};

int main() {
    B b;
    b.GetData();

    return 0;
}
#包括
#包括
#包括
甲级{
公众:
A(){}
~A(){}
void GetVector(std::vector和in){
std::wstring s=L“你好”;
对于(int i=0;i<10;i++)
in.向后推_(s);
}
};
B类{
公众:
B(){}
~B(){}
void GetData(){
A A;
std::向量s;
a、 GetVector(s);
}
};
int main(){
B B;
b、 GetData();
返回0;
}
我得到坠机的真实代码

void SCPreferenceComp::PopulateComboBox()
{
    SCConfig *config = SCConfig::GetInstance();
    std::vector<std::wstring> languages;
    config->GetAllLangugesName(languages);
    for(size_t i = 0; i != languages.size(); i++)
        mLangListComboBox->addItem(languages[i].c_str(), i+1);
    if(mLangListComboBox->getNumItems() > 0)
        mLangListComboBox->setSelectedId(1);
}

bool SCConfig::GetAllLangugesName(std::vector<std::wstring> &outLangNames)
{
    bool retVal = false;
    do
    {
        if(!mXMLDoc)
            break;
        xercesc::DOMNodeList *langNodeList = mXMLDoc->getElementsByTagName(strToX("language"));
        if(!langNodeList)
            break;
        const XMLSize_t langCount = langNodeList->getLength();
        for(XMLSize_t i = 0; i < langCount; i++)
        {
            xercesc::DOMNode *curLangNode = langNodeList->item(i);
            if(!curLangNode)
                continue;
            xercesc::DOMElement *curLangElem = dynamic_cast<xercesc::DOMElement*>(curLangNode);
            if(!curLangElem)
                continue;
            wxString s = strToW(curLangElem->getAttribute(strToX("name")));
            outLangNames.push_back(s.c_str());
        }
        retVal = true;
    }while(false);

    return retVal;
}
void-SCPreferenceComp::PopulateComboBox()
{
SCConfig*config=SCConfig::GetInstance();
向量语言;
config->getAllLanguagesName(语言);
对于(size_t i=0;i!=languages.size();i++)
mLangListComboBox->addItem(语言[i].c_str(),i+1);
如果(mLangListComboBox->getNumItems()>0)
mLangListComboBox->setSelectedId(1);
}
bool SCConfig::GetAllLanguageName(std::vector&outLangNames)
{
bool-retVal=false;
做
{
如果(!mXMLDoc)
打破
xercesc::DOMNodeList*langNodeList=mXMLDoc->getElementsByTagName(strToX(“语言”);
if(!langNodeList)
打破
const XMLSize_t langCount=langNodeList->getLength();
对于(XMLSize\u t i=0;iitem(i);
如果(!curLangNode)
继续;
xercesc::DomeElement*curLangElem=动态(curLangNode);
如果(!curLangElem)
继续;
wxString s=strToW(curLangElem->getAttribute(strToX(“name”));
把你推回去(s.c_str());
}
retVal=true;
}while(假);
返回返回;
}

我看不出该实现有任何错误,除了它没有任何可见的最终结果这一事实,这让我相信它可能与您失败的代码不完全匹配。

您不应该期望具有10个成员向量的玩具代码重新处理数百万成员出现的问题。你能发布真实的代码而不是图片吗?屏幕截图没有显示任何关于崩溃的有用信息,你发布的代码中没有任何错误。这些代码没有崩溃。尝试完全重新编译,可能您正在链接一些过时的内容。是的。。。这只是个假的!