QUOTE (toweroff @ Mar 1 2012, 21:51)

получается, что информация о куче хранится в какой-то реализации связанного списка там же, в области кучи (ну пока другого варианта не вижу)
В простейших вариантах - да, именно так и делается. Слышал, что есть более сложные, в которых список хранится отдельно, но не изучал этот вопрос, поэтому врать не буду. Если у процессора есть MMU и он используется менеджером памяти - все должно быть еще запутанней и интересней.
QUOTE (toweroff @ Mar 1 2012, 21:51)

отсюда и сложность в использовании оной?
Нет, это все делает библиотечный (или самописный) менеджер памяти. Сложность в слабо прогнозируемой дефрагментации, борьбе с ней и "утечками памяти", а их допустить очень просто, именно на них и намекает
xemul:
CODE
void eat_my_memory()
{
int * result = malloc(sizeof int, 10);
printf(" Я украл у вас немного памяти. Насовсем :-P");
}
поскольку result перестал существовать после выхода из этой функции - выделенный участок кучи вернуть обратно невозможно.