C++ Valgrind-条件跳转或移动取决于未初始化的值

C++ Valgrind-条件跳转或移动取决于未初始化的值,c++,valgrind,C++,Valgrind,我从2个上下文中得到valgrind错误。这是第一次。它声称我有未初始化的值,但我没有看到任何值。请帮助我理解它告诉我问题出在哪里: valgrind --leak-check=yes --track-origins=yes ./Lab4 in62.txt actual.txt ==4041== Memcheck, a memory error detector ==4041== Copyright (C) 2002-2015, and GNU GPL'd, by Julian

我从2个上下文中得到valgrind错误。这是第一次。它声称我有未初始化的值,但我没有看到任何值。请帮助我理解它告诉我问题出在哪里:

        valgrind --leak-check=yes --track-origins=yes ./Lab4 in62.txt actual.txt
==4041== Memcheck, a memory error detector
==4041== Copyright (C) 2002-2015, and GNU GPL'd, by Julian Seward et al.
==4041== Using Valgrind-3.11.0 and LibVEX; rerun with -h for copyright info
==4041== Command: ./Lab4 in62.txt actual.txt
==4041== 
==4041== Conditional jump or move depends on uninitialised value(s)
==4041==    at 0x409F2C: __gnu_cxx::__enable_if<std::__is_char<char>::__value, bool>::__type std::operator==<char>(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) (basic_string.h:4913)
==4041==    by 0x40AE3F: bool std::operator!=<char, std::char_traits<char>, std::allocator<char> >(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) (basic_string.h:4950)
==4041==    by 0x407FFD: Relation::join_createMap(std::deque<std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > >, std::allocator<std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > > > >&, std::vector<Relation, std::allocator<Relation> >&, Rule&, int&, bool&, bool&, Tuple const&, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > >&, std::vector<int, std::allocator<int> >&, std::vector<int, std::allocator<int> >&) (relation.cpp:317)
==4041==    by 0x408F87: Relation::join(std::vector<Relation, std::allocator<Relation> >&, Rule&, std::vector<Rule, std::allocator<Rule> >&) (relation.cpp:438)
==4041==    by 0x42069C: Database::ruleEvaluation(std::vector<Rule, std::allocator<Rule> >&, std::vector<Predicate, std::allocator<Predicate> >&, std::vector<Predicate, std::allocator<Predicate> >&, std::basic_ofstream<char, std::char_traits<char> >&) (database.cpp:77)
==4041==    by 0x41FA97: Database::evaluate(std::vector<Predicate, std::allocator<Predicate> >&, std::vector<Predicate, std::allocator<Predicate> >&, std::vector<Rule, std::allocator<Rule> >&, std::vector<Predicate, std::allocator<Predicate> >&, std::basic_ofstream<char, std::char_traits<char> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) (database.cpp:12)
==4041==    by 0x42822C: main (main.cpp:27)
==4041==  Uninitialised value was created by a heap allocation
==4041==    at 0x4C2C12F: operator new(unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==4041==    by 0x41642A: __gnu_cxx::new_allocator<std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > > >::allocate(unsigned long, void const*) (new_allocator.h:104)
==4041==    by 0x414A62: std::allocator_traits<std::allocator<std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > > > >::allocate(std::allocator<std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > > >&, unsigned long) (alloc_traits.h:360)
==4041==    by 0x411C7F: std::_Deque_base<std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > >, std::allocator<std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > > > >::_M_allocate_node() (stl_deque.h:601)
==4041==    by 0x41553C: std::_Deque_base<std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > >, std::allocator<std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > > > >::_M_create_nodes(std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > >**, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > >**) (stl_deque.h:726)
==4041==    by 0x4129DE: std::_Deque_base<std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > >, std::allocator<std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > > > >::_M_initialize_map(unsigned long) (stl_deque.h:700)
==4041==    by 0x40EB1F: std::_Deque_base<std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > >, std::allocator<std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > > > >::_Deque_base() (stl_deque.h:490)
==4041==    by 0x40B337: std::deque<std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > >, std::allocator<std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > > > >::deque() (stl_deque.h:883)
==4041==    by 0x408DC3: Relation::join(std::vector<Relation, std::allocator<Relation> >&, Rule&, std::vector<Rule, std::allocator<Rule> >&) (relation.cpp:425)
==4041==    by 0x42069C: Database::ruleEvaluation(std::vector<Rule, std::allocator<Rule> >&, std::vector<Predicate, std::allocator<Predicate> >&, std::vector<Predicate, std::allocator<Predicate> >&, std::basic_ofstream<char, std::char_traits<char> >&) (database.cpp:77)
==4041==    by 0x41FA97: Database::evaluate(std::vector<Predicate, std::allocator<Predicate> >&, std::vector<Predicate, std::allocator<Predicate> >&, std::vector<Rule, std::allocator<Rule> >&, std::vector<Predicate, std::allocator<Predicate> >&, std::basic_ofstream<char, std::char_traits<char> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) (database.cpp:12)
==4041==    by 0x42822C: main (main.cpp:27)
[more errors]
==5323== 
==5323== 
==5323== HEAP SUMMARY:
==5323==     in use at exit: 72,704 bytes in 1 blocks
==5323==   total heap usage: 29,328 allocs, 29,327 frees, 3,430,706 bytes allocated
==5323== 
==5323== LEAK SUMMARY:
==5323==    definitely lost: 0 bytes in 0 blocks
==5323==    indirectly lost: 0 bytes in 0 blocks
==5323==      possibly lost: 0 bytes in 0 blocks
==5323==    still reachable: 72,704 bytes in 1 blocks
==5323==         suppressed: 0 bytes in 0 blocks
==5323== Reachable blocks (those to which a pointer was found) are not shown.
==5323== To see them, rerun with: --leak-check=full --show-leak-kinds=all
==5323== 
==5323== For counts of detected and suppressed errors, rerun with: -v
==5323== ERROR SUMMARY: 309 errors from 2 contexts (suppressed: 0 from 0)
加入:

void Relation::join_createMap(std::deque<strPairMap> &working_tuples_deque, std::vector<Relation> &cur_relation_vector, Rule &cur_rule, int &j, bool &dup_scheme_params, bool &diff_id_found, const Tuple &x, strPairMap &temp_map, std::vector<int> &map_indeces_to_copy, std::vector<int> &grand_copy_vector){
    for (int l = 0; l < working_tuples_deque.size(); l++){
        bool add_index_to_vector = true;
        for (int k = 0; k < cur_relation_vector.at(j).scheme.size(); k++){
            /* If curent scheme param k is found in map l in working deque */
            if (working_tuples_deque.at(l).find(cur_relation_vector.at(j).scheme.at(k))->second.second != cur_relation_vector.at(j).name){ //relation.cpp:317
                diff_id_found = true;
                if (working_tuples_deque.at(l).find(cur_relation_vector.at(j).scheme.at(k)) != working_tuples_deque.at(l).end()){
                    std::string param_to_match = working_tuples_deque.at(l).find(cur_rule.predicate_vector.at(j).parameter_vector.at(k).toString())->second.first;
                    /* but if the values with the matching scheme params don't match.. */
                    if (param_to_match != x.at(k)){
                        add_index_to_vector = false;
                    }
                }
            }
            std::pair<std::string, std::string> temp_pair("","");
            temp_pair.first = x.at(k);
            temp_pair.second = cur_relation_vector.at(j).name;
            temp_map.emplace(cur_relation_vector.at(j).scheme.at(k), temp_pair);
        }
        if (add_index_to_vector == true || dup_scheme_params == false){
            map_indeces_to_copy.push_back(l);
            grand_copy_vector.push_back(l);
        }
    }
}
(relation.cpp:425是第6行,
std::deque working\u tuples\u deque;
来自以下函数)

当我把事情分解时:

for (int k = 0; k < cur_relation_vector.at(j).scheme.size(); k++){
/* If curent scheme param k is found in map l in working deque */
strPairMap::iterator compare_it = working_tuples_deque.at(l).find(cur_relation_vector.at(j).scheme.at(k));
std::pair<std::string,std::string> compare_pair = compare_it->second; // offending line
std::string compare_string = compare_pair.second;
if (compare_string != cur_relation_vector.at(j).name){...}
...
}
违规行是
relation.cpp:317
,而不是
main.cpp:27
。(Valgrind从问题的根源一直追踪到最广泛的范围。)
find
函数有时返回
working\u tuples\u deque.at(l).end()
。然后代码继续访问
.end()
第二个
元素,该元素无效。这就是Valgrind错误的来源

至于解决方案,我首先初始化了一个单独的
std::string
compare\u string
)。然后,我使用
if
语句仅在
find
没有返回
.end()
迭代器时(即如果
find
函数实际找到了某些内容),才重新分配
compare\u字符串

结果:

std::string compare_string = "";
strPairMap::iterator compare_it = working_tuples_deque.at(l).find(cur_relation_vector.at(j).scheme.at(k));
if (compare_it != working_tuples_deque.at(l).end()){
std::pair<std::string,std::string> compare_pair = compare_it->second;
compare_string = compare_pair.second;
}
std::string compare_string=”“;
迭代器compare_it=working_tuples_deque.at(l).find(cur_relation_vector.at(j).scheme.at(k));
if(compare_it!=working_tuples_deque.at(l).end()){
std::pair compare\u pair=compare\u it->second;
比较\u字符串=比较\u对。秒;
}
cred:所有评论员

冒犯的界线是
关系。cpp:317
,而不是
main。cpp:27
。(Valgrind从问题的根源一直追踪到最广泛的范围。)
find
函数有时返回
working\u tuples\u deque.at(l).end()
。然后代码继续访问
.end()
第二个
元素,该元素无效。这就是Valgrind错误的来源

至于解决方案,我首先初始化了一个单独的
std::string
compare\u string
)。然后,我使用
if
语句仅在
find
没有返回
.end()
迭代器时(即如果
find
函数实际找到了某些内容),才重新分配
compare\u字符串

结果:

std::string compare_string = "";
strPairMap::iterator compare_it = working_tuples_deque.at(l).find(cur_relation_vector.at(j).scheme.at(k));
if (compare_it != working_tuples_deque.at(l).end()){
std::pair<std::string,std::string> compare_pair = compare_it->second;
compare_string = compare_pair.second;
}
std::string compare_string=”“;
迭代器compare_it=working_tuples_deque.at(l).find(cur_relation_vector.at(j).scheme.at(k));
if(compare_it!=working_tuples_deque.at(l).end()){
std::pair compare\u pair=compare\u it->second;
比较\u字符串=比较\u对。秒;
}

cred:所有评论员

我不确定这是否会导致错误,但
out
从未与任何文件关联。考虑使用初始化构造函数<代码> STD::OFFROW(const char文件名,iOSKBase::OpenMODE模式)。或者,
是否评估
打开文件流?在初始化
arg
之前是否检查设置了
argv[2]
?我将
if(argc!=3){return 0;}
作为
main
中的第一条语句(函数声明=
int main(int argc,char*argv[])
)直到添加了
join
和相关函数,我才发现valgrind错误。这就是为什么我如此困惑,为什么它把我指向我的
main
。它不是指向main,而是指向
关系。cpp:317
,其中有某种字符串比较。我建议您使用-O0-ggdb3编译,我不确定这是否会导致错误,但是
out
从未与任何文件关联。考虑使用初始化构造函数<代码> STD::OFFROW(const char文件名,iOSKBase::OpenMODE模式)。或者,
是否评估
打开文件流?在初始化
arg
之前是否检查设置了
argv[2]
?我将
if(argc!=3){return 0;}
作为
main
中的第一条语句(函数声明=
int main(int argc,char*argv[])
)直到添加了
join
和相关函数,我才发现valgrind错误。这就是为什么我如此困惑,为什么它把我指向我的
main
。它不是指向main,而是指向
关系。cpp:317
,其中有某种字符串比较。我建议您使用-O0-ggdb3进行编译
for (int k = 0; k < cur_relation_vector.at(j).scheme.size(); k++){
/* If curent scheme param k is found in map l in working deque */
strPairMap::iterator compare_it = working_tuples_deque.at(l).find(cur_relation_vector.at(j).scheme.at(k));
std::pair<std::string,std::string> compare_pair = compare_it->second; // offending line
std::string compare_string = compare_pair.second;
if (compare_string != cur_relation_vector.at(j).name){...}
...
}
std::pair<std::string,std::string> compare_pair = compare_it->second;
Source and destination overlap in memcpy(0x5ea3040, 0x5b2c450, 95601552)
Invalid read of size 8
Conditional jump or move depends on uninitialised value(s)
Uninitialised value was created by a heap allocation
Conditional jump or move depends on uninitialised value(s)
Uninitialised value was created by a heap allocation
terminate called after throwing an instance of 'std::logic_error'
  what():  basic_string::_M_construct null not valid

Process terminating with default action of signal 6 (SIGABRT)
std::string compare_string = "";
strPairMap::iterator compare_it = working_tuples_deque.at(l).find(cur_relation_vector.at(j).scheme.at(k));
if (compare_it != working_tuples_deque.at(l).end()){
std::pair<std::string,std::string> compare_pair = compare_it->second;
compare_string = compare_pair.second;
}