Например, может оказаться, что указатель, по которому вы освобождаете память, указывает на область памяти, которая уже была заново выделена вашим процессом в каком-то другом месте. И теперь вы снова освободили свою память. Разумеется в этом случае вы повреждаете собственные данные, дальнейшее поведение программы может быть непредсказуемым.
Но если область памяти, на которую указывает ваш освобождённый указатель была занята другим процессом. То при вашей попытке освободить эту память вы должны получить от операционной системы сигнал SIGSEGV (сигнал ошибки доступа к памяти).
Так например пример ниже не всегда даёт ошибку доступа к памяти. Что, конечно, очень неприятно.
int main(int argc, char *argv[]) { int *a = new int(5); delete a; delete a; return 0; }Очень много интересной информации об этом можно прочитать в этом FAQ-листе:
http://www.parashift.com/c++-faq-lite/freestore-mgmt.html
Но иногда ошибка доступа к памяти всё таки происходит, и хотя бы в эти моменты будет полезным её перехватить.
Перейти к "Перехват сообщений SIGSEGV (Segmentation Fault) и SIGFPE (Floating point exception)"
Casinos Near Me - Mapyro
ОтветитьУдалитьDiscover a casino with great 김제 출장안마 slots, table games, and video 부천 출장안마 poker near you from Mapyro. In the US, there 의왕 출장샵 are 강원도 출장안마 no live table 양산 출장안마 games