malloc является системным вызовом, он запрашивает память в куче у ОС.
free также является системным вызовом, он освобождает участок памяти в куче.
ОС хранит информацию о выделенной памяти в своих внутренних структурах, к которым оно и обращается при вызове malloc , free, таким образом ОС знает сколько памяти надо освободить.
t = (int*) malloc(5); - выделит лишь 5 байт, а вам надо t = (int*) malloc(5*sizeof(int)); - 5 элементов типа int (на 32бит архитектуре - 20 байт)
Цитата nikit-xxx:
Теперь t указывает на самую первую ячейку памяти, отведённую для типа int ? »
|
Именно так.