Ho visto due stili di utilizzo sizeof
per operazioni relative alla memoria (come in memset
o malloc
):
sizeof(type)
, esizeof variable
osizeof(variable)
Quale preferiresti o utilizzeresti un mix dei due stili e quando useresti ogni stile? Quali sono i pro e i contro di ogni stile e quando li usi?
Ad esempio, posso vedere la seguente coppia di situazioni in cui uno stile aiuta e l'altro no:
Quando si ottiene il riferimento indiretto del puntatore errato:
type *var;
...
memset(var, 0, sizeof var); /* oops */
Quando il tipo cambia:
new_type var; /* changed from old_type to new_type */
...
memset(&var, 0, sizeof(old_type)); /* oops */