История изменений
Исправление monk, (текущая версия) :
При разыменовании указателя на освобождённую память можно гарантированно падать.
Как? Вот у тебя есть кусок кода
void f(int *p)
{
*p = 1;
}
Сейчас компилятор просто пишет значение по предоставленному адресу.
Но если этот адрес уже освобождён и использован под что-то ещё, будет портится память этого чего-то ещё (вплоть до адреса возврата из функции, если был адрес на стеке).
Гарантированно падать можно только если отдельно хранить список (хеш) выделенных областей памяти и при каждом разыменовании проверять, что адрес относится к допустимым.
Исходная версия monk, :
При разыменовании указателя на освобождённую память можно гарантированно падать.
Как? Вот у тебя есть кусок кода
void f(int *p)
{
*p = 1;
}
Сейчас компилятор просто читает значение по предоставленному адресу.
Но если этот адрес уже освобождён и использован под что-то ещё, будет портится память этого чего-то ещё (вплоть до адреса возврата из функции, если был адрес на стеке).
Гарантированно падать можно только если отдельно хранить список (хеш) выделенных областей памяти и при каждом разыменовании проверять, что адрес относится к допустимым.