Предполагая, что вы исправите проблему «нет места для нулевого значения», то есть выделите 3 байта вместо 2, вы обычно используете malloc (), только если вам нужна динамическая память. Например, если вы не знаете, насколько большим будет массив, вы можете использовать malloc.
Как указывалось, если вы используете malloc () и впоследствии не освобождаете память, значит, у вас утечка памяти.
Еще один момент: вам действительно нужно проверить возвращаемое значение malloc (), чтобы убедиться, что вы получили память. Я знаю, что в Solaris malloc () никогда не завершается с ошибкой (думал, что он может спать - хорошая причина, чтобы не вызывать его, если вы не хотите, чтобы ваш процесс шел, как отмечалось выше). Я предполагаю, что в Linux malloc () может завершиться с ошибкой (то есть, если недостаточно памяти). [Пожалуйста, поправьте меня, если я ошибаюсь.]