se malloc e realloc retornam void* pq se utiliza cast no malloc e não se utiliza no realloc?
p = (int*)malloc(a*sizeof(int));
p = realloc(p, b*sizeof(int));
se malloc e realloc retornam void* pq se utiliza cast no malloc e não se utiliza no realloc?
p = (int*)malloc(a*sizeof(int));
p = realloc(p, b*sizeof(int));
Isso aí tem origens históricas.
Antigamente, o malloc retornava um char*, o que forçava sempre o cast.
Quando o ANSI C foi introduzido, isso foi alterado para um void*, que permite conversão implícita (sem cast) para qualquer outro tipo de ponteiro.
Então, tanto o malloc quando o realloc permitem o uso sem cast. Como a grafia do malloc antiga exigia o cast, o uso se manteve.
No C++, o cast é obrigatório nos dois casos.