Я знаю, что это старый пост, и я могу что-то упустить, но кажется, что все здесь упустили реальный ответ. Если вы хотите иметь один сертификат, который работает на нескольких серверах с использованием нескольких имен хостов / доменов, вам просто нужно купить сертификат SAN. Мы делаем это все время на работе ...
В 16-битной char
среде malloc (10 * sizeof (char))
выделит 10 char
s (10 байтов), потому что, если char
составляет 16 бит, то эта архитектура / реализация определяет байт как 16 бит. char
не октет, а байт. На старых компьютерах он может быть больше 8-битного фактического стандарта, который мы имеем сегодня.
Соответствующий раздел из стандарта C следует:
3.6 Термины, определения и символы
байт - адресуемая единица хранения данных, достаточно большая, чтобы вместить любой член основного набора символов среды выполнения ...
ПРИМЕЧАНИЕ 2. - Байт состоит из непрерывной последовательности битов, количество которых определяется реализацией.
В стандарте C99 строгая корреляция между байтами, char
и размером объекта дана в 6.2.6.1/4 «Представления типов - Общие»:
Значения, хранящиеся в объектах без битовых полей любого другого типа объекта, состоят из
n × CHAR_BIT
бит, гдеn
- размер объекта этого типа в байтах. Значение может быть скопировано в объект типаunsigned char [n]
(например, с помощью memcpy); результирующий набор байтов называется объектным представлением значения.
В стандарте C ++ такое же отношение дается в 3.9 / 2 «Типы»:
Для любого объекта (кроме подобъекта базового класса) из POD типа T, независимо от того, содержит ли объект допустимое значение типа T, базовые байты (1. 7) составляющий объект можно скопировать в массив char или unsigned char. Если содержимое массива char или unsigned char копируется обратно в объект, объект впоследствии должен сохранить свое исходное значение.
В C90, похоже, не существует такой явно упомянутой корреляции, но между определением a byte, определение символа и определение оператора sizeof
, можно сделать вывод, что тип char
эквивалентен байту.
Также обратите внимание, что число Количество битов в байте (а количество битов в char
) определяется реализацией - строго говоря, это не обязательно должно быть 8 бит. И onebyone указывает в комментарии в другом месте, что DSP обычно имеют байты с числом бит, отличным от 8.
Разве единицы "size_t sz" не входят в адресную единицу вашей архитектуры? Я работаю с DSP, адреса которого соответствуют 32-битным значениям, а не байтам. malloc (1) получает указатель на 4-байтовую область.