Я получаю double free or corruption (fasttop)
ошибку для следующего кода, написанного на C ++ с использованием OpenMP. Я новичок в параллельном программировании. Мне интересно, как я могу использовать блокировку для MM
данных struture.
vector <unsigned char *> XX;
int bbh;
.....
.....
.....
unordered_map<uint64_t, vector<int>> MM;
#pragma omp parallel for shared(MM)
for (i = 0; i < seqns.size()-1; i++) {
for (int p = 0; p < k*bbh; p += 2*bbh) {
string s1((char*) (XX[i]+p));
string s2((char*) (XX[i]+p+bbh));
string s3 = s1+s2;
uint64_t hash = 0;
MetroHash64::Hash((uint8_t*)s3.c_str(), s3.length(), (uint8_t *)&hash, 0);
if(MM.find(hash) != MM.end()) { MM[hash].push_back(i); }
else {vector<int> v; v.push_back(i); MM.insert(make_pair(hash, v));}
}
}