EXC_BAD_ACCESS(代码= 1,地址= 0x10))???在这种情况下,这意味着什么?

时间:2016-11-02 11:22:12

标签: c++

我正在构建一个遗传算法,我遇到了问题。这是一个内存问题,我仍然是新的和malloc的东西,我需要使用它吗?如果有人能解释错误,我将不胜感激。在第4次增加K之后,我得到EXC_BAD_ACCESS错误(代码= 1,地址= 0x10))。它陷入了

  

tmp.at(0)= it_1-> first;

void Population::Poppairing(int j)
{
int rand_num = 0;
int rand_per = 0;
for (unsigned long i = select.size(); i-=2;)
{
    rand_per = rand()%100;
    if(j < rand_per)
    {
        auto temp_1 = parents.at(select.at(i)).get_genome();//auto here is unordered map
        auto temp_2 = parents.at(select.at(i-1)).get_genome();
        auto it_1 = temp_1.begin();//here it is and iterator
        auto it_2 = temp_2.begin();
        for(int k = 0;k < no_rule; k++)
        {
            rand_num = rand() % no_in;
            advance(it_1,k);
            advance(it_2,k);
            vector<string > tmp(2);
            for(int l = 2; l--;)
            {
                tmp.at(0) = it_1->first;//father 
                tmp.at(1) = it_2->first;//mother
                tmp.at(l).erase((tmp.at(l).begin()+rand_num),tmp.at(l).end());
                tmp.at((!l)).erase(tmp.at((!l)).begin(),(tmp.at((!l)).end()-((tmp.at(!l)).size()-rand_num)));
                children.at(i-l).set_input_pos((tmp.at(l)+tmp.at(!l)),k);
                children.at(i-l).set_output_pos((unsigned char)(parents.at(i-l).get_genome().begin()->second),k);
            }
            tmp.clear();
        }
        children.at(i).re_initialising_map();
        children.at(i-1).re_initialising_map();
    }
    else
    {
        children.at(i) = parents.at(select.at(i));
        children.at(i-1) = parents.at(select.at(i-1));
    }
}
}

1 个答案:

答案 0 :(得分:0)

我修复了它,使用advance iterator中的stl似乎存在问题。只是在k的末尾增加了it_1和2 for循环。