При динамическом распределении char
s я всегда делал это так:
char *pCh = malloc(NUM_CHARS * sizeof(char));
Недавно мне сказали, что использование sizeof(char)
является избыточным и ненужным, потому что "по определению размер a char
является одним байтом", поэтому я должен/мог написать вышеприведенную строку следующим образом
char *pCh = malloc(NUM_CHARS);
Я понимаю, что размер char зависит от набора собственных символов, который используется на целевом компьютере. Например, если собственный набор символов является ASCII, a char
- один байт (8 бит), а если нативный набор символов - UNICODE, то a char
обязательно потребует больше байтов ( > 8 бит).
Чтобы обеспечить максимальную переносимость, не нужно было бы использовать sizeof(char)
, так как malloc
просто выделяет 8-битные байты? Я недопонимаю malloc
и sizeof(char)
?