gpt4 book ai didi

c++ - 调用需要引用 vector 的函数时崩溃

转载 作者:行者123 更新时间:2023-11-28 08:19:02 25 4
gpt4 key购买 nike

我想知道将 vector 引用传递给函数是否有问题,如下例所示。这段代码运行良好。但是我项目中的相同类型的代码让我崩溃。我不知道为什么。

在这种情况下,每当我调用需要 std::vector & 的函数时。然后在被调用的函数中, vector 的大小达到了数百万...。我附上了我实际遇到此崩溃的屏幕截图。 enter image description here我只想知道这些类型的实现是否有问题...

#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;
}

我遇到崩溃的真实代码...

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;
}

最佳答案

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

关于c++ - 调用需要引用 vector 的函数时崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6626293/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com