gpt4 book ai didi

c++ - 为什么我的 std::vector.push_back 抛出 bad_alloc 异常

转载 作者:行者123 更新时间:2023-11-28 00:01:32 25 4
gpt4 key购买 nike

我有一个简单的循环,它读取文本文件并将其写入字符数组。这是函数

void podBase::parseMailingAddyImacroOutput(string a)
{
fstream inP(a, fstream::in);
char *buffer = new char[50000];
int sz_data = 0;
int nComma = 0;
string temp = "";
string *ptr_temp = &temp;
char z = ' ';
bool check[3] = { false,false,false };
_MailingAddy.resize(vectorEntries);
_CityStateZip.resize(vectorEntries);

while (inP.get(buffer[sz_data]))
sz_data++;

//inP.close();



//3 Commmas
//First comma: Owner Name
//Second Comma: Owner mailing street & Num
//Third Comma: City, State, Zipcode

for (int i = 0; i < sz_data; i++)
{

z = buffer[i];
if (!isComma(z))
temp += z;

if (isComma(z))
nComma++;

if (nComma == 1 && !check[0])
{
temp.clear();
check[0] = true;
}

if (nComma == 2 && !check[1])
{
_MailingAddy.push_back((temp));
temp.clear();
check[1] = true;
}

if (nComma == 3 && !check[2])
{
_CityStateZip.push_back(temp);
temp.clear();
check[0] = false;
check[1] = false;
check[2] = false;
nComma = 0;

}



}




}

执行后,程序在以下行崩溃:

if (nComma == 2 && !check[1])
{
_MailingAddy.push_back((temp));
temp.clear();
check[1] = true;
}

尝试执行“push_back”由于“bad_alloc”的原因。无论我尝试将什么 push_back 放入 vector 中,我都会收到此错误 - 所以我认为这不是 std::string 临时变量的问题。我在同一个程序中多次使用类似的方法,但从未遇到过这样的问题。欢迎任何见解!

最佳答案

您每次调用 parseMailingAddyImacroOutput 时都会泄漏 50k 内存,因此您可能内存不足。

关于c++ - 为什么我的 std::vector.push_back 抛出 bad_alloc 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38593732/

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