Как функция `free` определяет, сколько памяти освободить, когда ей дан указатель, выделенный с помощью `malloc`, например: `int *i = (int *)malloc(12);` а потом `free(i);`? — ДейлиПреп