Цитата(Злодей @ May 5 2009, 15:05)

интересно, почему нельзя освобождать память если её не выделяли.
Наверное, потому, что при выделении памяти её (память) никто не обнуляет, и там - некий мусор, который может быть воспринят как "правильные" данные, и таки память будет "освобождена" (о чем менеджер кучи будет уведомен; к этой памяти "пришиты" указатели на другие участки кучи, которые (указатели) будут изменены; при этом, по-видимуму, испортятся некие нужные Вам данные (уж куча разрушится точно!) и т.д.)...
P.S. Прочитал что написал - сумбурно получилось... Другими словами: при освобождении памяти с помощью free менеджер кучи не имеет возможности проверить - точно ли выделялся этот участок памяти или программист ошибся; и, скорее всего, его "освободит" с непредсказуемыми последствиями.