Hoje, cheguei à página 167 de The C Programming Language (segunda edição, Brian W. Kernighan e Dennis M. Ritchie) e descobri que o autor diz que devo transmitir malloc
. Aqui está a parte do livro:
7.8.5 Gerenciamento de armazenamento
As funções malloc e calloc obtêm blocos de memória dinamicamente.
void *malloc(size_t n)
retorna um ponteiro para n bytes de armazenamento não inicializado ou NULL se a solicitação não puder ser atendida.
void *calloc(size_t n, size_t size)
retorna um ponteiro para espaço livre suficiente para uma matriz de n objetos do tamanho especificado ou NULL se a solicitação não puder ser atendida. O armazenamento é inicializado em zero. O ponteiro retornado por malloc ou calloc possui o alinhamento adequado para o objeto em questão, mas deve ser convertido no tipo apropriado, como em
int *ip; ip = (int *) calloc(n, sizeof(int));
Eu já sei que malloc
(e sua família) retorna o tipo void * , e há boas explicações por que não lançarmalloc
.
Mas minha pergunta é: por que o livro diz que devo lançá-lo?
void *
e não tenha sido atualizado. Veja também esta resposta .
malloc
porque NÃO é C ++ - exceto quando você precisa - mas você não deveria - exceto ... AGGGHHHHHHH !!!!! :-)