Нет, вы не можете.
malloc(sizeof(char));
Распределит память в куче, за которую вы отвечаете за ее удаление. Одним из преимуществ этого является то, что данные в выделенной памяти не «умирают», когда заканчивается его область действия, а только умирают, когда вы уничтожаете их.
char c = 'a'
Будет храниться в стеке и будет автоматически освобожден, когда закончится его область действия.
РЕДАКТИРОВАТЬ: Что касается вашего комментария, как правило, локальные переменные обычно хранятся в стеке (это, конечно, автоматически). malloc , calloc
позволяет вам «просить» пространство в куче и использовать его по своему усмотрению. Если вам нужна дополнительная информация, вы можете посмотреть здесь , как упомянуто @ Jabberwocky