Consideriamo questa linea di codice:

codice:
char* buffer=(char*)malloc(100*sizeof(char));
Ho due dubbi:

1) Il cast implicito l' ho sempre usato per non avere warning dal compilatore.Ma so che c'è compatibilità di tipo per cui non è strettamente necessario.Ma può essere considerato un errore fare il cast pur essendo "inutile"?

2)Il mio professore all' università ha sempre insistito perché usassimo sizeof(char), che potrebbe anche ritornare 2 su certe macchine.Ma da quel che vedo ritorna sempre 1, è necessario specificare sizeof(char)? Può comunque essere fatto per correttezza?

Volendo riscrivere questa linea di codice come la riscrivereste nella maniera più corretta possibile?