При использовании malloc и выполнении подобной манипуляции с памятью я могу полагаться на sizeof (char) всегда 1?
Например, мне нужно выделить память для N элементов типа char
. Требуется умножение на sizeof( char )
:
char* buffer = malloc( N * sizeof( char ) );
или я могу полагаться на sizeof (char), всегда равным 1, и просто пропустить умножение
char* buffer = malloc( N );
Я полностью понимаю, что sizeof
оценивается во время компиляции, а затем компилятор может даже скомпилировать умножение, и поэтому оценка производительности будет минимальной и, скорее всего, нулевой.
Я прошу в основном о ясности кода и переносимости. Является ли это умножение когда-либо необходимым для типа char
?