我插入地图时Valgrind错误

时间:2016-10-31 20:09:54

标签: c++ valgrind

我在Valgrind中有错误:很快 - 条件跳转或移动取决于未初始化的值。(总共113错误几乎相同的类型) 这段代码中的问题(我在地图中插入的行):

头文件中的

AVLclass<int,char>*ptr1; 
map<int,AVLtclass<int,char>*>check1; 

在cpp文件中:

string data, number, order, id, token;
int number_i,number_i2, id_i, order_i, data_i;
float number_f2;
char data_c[2];
vector <string> record;
istringstream ss(line);
//separate number (looks for commas)
while (getline(ss, token, ','))
{
    record.push_back(token);
}

id     = record[0];
order  = record[1];
data   = record[2];
number = record[3];
id_i = atoi(id.c_str());
order_i = atoi(order.c_str());
data_i = atoi(data.c_str());
number_i = atoi(number.c_str());

if ( data_i == 0 && number_i == 0)
{     
    ptr1 = new AVLclass<int,char>;
    ptr1->setId(id_i);
    ptr1->setOrder(order_i);
    ptr1->setData(data_i);
    ptr1->setNumber(number_i);
    check1.insert(pair<int,AVLclass<int,char>*>(id_i,ptr1));  
}

当我尝试使用实际整数而不是id_i时,我有60个错误而不是113.但我没有看到未初始化的值。我尝试了许多不同的方法来插入此地图,但它无法正常工作。

1 个答案:

答案 0 :(得分:0)

请使用std :: stoi而不是atoi。例如,如果记录[0]中的结果不正确,它将管理错误。 (而Valgrind应该告诉你错误的位置)。