C++ 调用需要引用向量的函数时发生崩溃
我想知道下面的例子中,将向量引用传递给函数是否有错误。这段代码运行得很好。但我的项目中的同一类型代码让我崩溃。我不知道为什么 在这种情况下,每当我调用需要std::vector&的函数时。然后在被调用的函数中,向量的大小达到百万分之一。。。。我已经附上了截图,我实际上是得到这个崩溃。 我只是想知道这些类型的实现中是否存在错误C++ 调用需要引用向量的函数时发生崩溃,c++,stl,C++,Stl,我想知道下面的例子中,将向量引用传递给函数是否有错误。这段代码运行得很好。但我的项目中的同一类型代码让我崩溃。我不知道为什么 在这种情况下,每当我调用需要std::vector&的函数时。然后在被调用的函数中,向量的大小达到百万分之一。。。。我已经附上了截图,我实际上是得到这个崩溃。 我只是想知道这些类型的实现中是否存在错误 #include <iostream> #include <vector> #include <string> class A { p
#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个成员向量的玩具代码重新处理数百万成员出现的问题。你能发布真实的代码而不是图片吗?屏幕截图没有显示任何关于崩溃的有用信息,你发布的代码中没有任何错误。这些代码没有崩溃。尝试完全重新编译,可能您正在链接一些过时的内容。是的。。。这只是个假的!