Таким образом, мой код работал для моей лаборатории на ошибках памяти 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;
}