ошибка памяти в двоичном поиске c ++ "* Ошибка в` ./Drivers ': free (): неверный следующий размер (нормальный): 0x000000000166c2d0 *** " - PullRequest
0 голосов
/ 03 июля 2018

Таким образом, мой код работал для моей лаборатории на ошибках памяти c ++, но, хотя он работал, я продолжаю получать «* Ошибка в` ./Drivers ': free (): неверный следующий размер (нормальный): 0x000000000166c2d0 * "ошибка, и вместе с этим приходит обратный след и карта памяти. Так что мне просто интересно, почему такая проблема возникает. Вот мой код:

int binarySearch(const Array<NYCTaxiDriver>& aSortedList,
              unsigned int aKey,
              int aBegin,
              int aEnd
              )
{
  if(aEnd >= aBegin){
    int avg = (aBegin+aEnd)/2;
    if(aSortedList[avg].getMedallionNumber() == aKey){
      return avg;
    }
   if(aSortedList[avg].getMedallionNumber()>aKey){
     return binarySearch(aSortedList,aKey, aBegin, avg-1);
    }
     return binarySearch(aSortedList,aKey, avg+1, aEnd);
  }
   return -1;
}
void printTheMatchingDrivers(const Array<unsigned int>& aManhattanMedallions,const Array<NYCTaxiDriver>& aMatchedDrivers)
{
  int size = aMatchedDrivers.getSize();
  for(int i=0;i<aManhattanMedallions.getSize()-1;i++){
    int resultPos = binarySearch(aMatchedDrivers,aManhattanMedallions[i],0,size);
    if(resultPos != -1){
      cout<<"Match "<<1<< ":"<<"\n"<<aMatchedDrivers[resultPos].getMedallionNumber()<<": "<<aMatchedDrivers[resultPos].getLastName()<<", "<<aMatchedDrivers[resultPos].getFirstName()<<endl;
   }
  }
 }
int main(){
    Array<unsigned int> manhattanMedallions;
    Array<NYCTaxiDriver> matchedDrivers;// already sorted
    printTheMatchingDrivers(manhattanMedallions, matchedDrivers);
    return 0;
}

1 Ответ

0 голосов
/ 03 июля 2018

Кажется, проблема в контейнере класса Array.

...