Sto provando a rendere un codice più efficiente. Ho qualcosa di simile:Comportamento di realloc quando la nuova dimensione è uguale a quella precedente
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++;
}
La memoria viene allocata dinamicamente. Vorrei ridurre le chiamate realloc per rendere il codice più efficiente. Mi piacerebbe sapere come si comporterebbe realloc se la nuova dimensione è uguale a quella vecchia. La chiamata sarà semplicemente ignorata?
OT: Mi sembra '(iCount + 1) * sizeof (MAP)' almeno sembra più bello ... – alk
@alk: hai ragione. Lo cambierà. –
La maggior parte delle implementazioni probabilmente restituisce lo stesso puntatore, ma alcune potrebbero talvolta utilizzare un 'realloc' con le stesse dimensioni di un'opportunità per riposizionare lo spazio allocato per rendere più facili le allocazioni future. –