alocação dinâmica

1 resposta
C

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));

1 Resposta

ViniGodoy

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.

Criado 21 de setembro de 2010
Ultima resposta 21 de set. de 2010
Respostas 1
Participantes 2