Многие реализации malloc
выделяют с определенным «разрешением» для эффективности.
Это означает, что даже если вы запросили за один байт, вы вполне могли получить 16 или 32.
Однако это не то, на что вы можете положиться, так как это неопределенное поведение.
Неопределенное поведение означает, что может произойти что угодно , включая все, что работает, несмотря на проблемный код :-)