Próbuję poprawić kod. Mam coś takiego:Zachowanie ponownego przydziału, gdy nowy rozmiar jest taki sam jak stary
typedef struct{
...
}MAP;
MAP* pPtr=NULL;
MAP* pTemp=NULL;
int iCount=0;
while (!boolean){
pTemp=(MAP*)realloc(pPtr,(iCount+1)*sizeof(MAP));
if (pTemp==NULL){
...
}
pPtr=pTemp;
...
iCount++;
}
Pamięć jest przydzielana dynamicznie. Chciałbym ograniczyć liczbę ponownych wywołań, aby kod był bardziej wydajny. Chciałbym wiedzieć, jak zachowałoby się realloc, gdyby nowy rozmiar był równy temu staremu. Czy połączenie będzie po prostu ignorowane?
OT: Czuję, że '(iCount + 1) * sizeof (MAP)' wygląda ładniej ... – alk
@alk: masz rację. Zmienię to. –
Większość implementacji prawdopodobnie zwraca ten sam wskaźnik, ale niektóre mogą czasami używać 'realloc' o takim samym rozmiarze jak możliwość przeniesienia przydzielonego miejsca, aby ułatwić przyszłe przydzielanie. –