OpenMP ошибка двойного освобождения или повреждения (fasttop) (c ++) - PullRequest
0 голосов
/ 26 июня 2019

Я получаю 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));}
    }
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...