Код:
int* ptr;
ptr = (int *)malloc(10 * sizeof(int));
free(ptr);
Пусть INT - это 4 байта.
Собственно, вопрос: как free узнаёт, что надо освободить именно 40 байт, а не 4?
В указателе помимо адреса ячейки памяти, типа данных (т.е. сколько байт от ячейки) еще хранится и количество ячеек?
Мне встречаются источники, где утверждается, что переменная-указатель в 32-битной занимает 4 байта. Т.е. там может хранится только адрес ячейки. А где же тогда тип и, тем более количество ячеек, если это возврат из malloc?