При выходе из программы на C ++ происходит сбой с ошибками, такими как:
EAccessViolation with mesage 'Access violation at address 0...
and
Abnormal Program Termination
Возможно, это вызвано каким-то деструктором, потому что это происходит только при выходе из приложения.Я использую несколько внешних библиотек и не могу найти код, который его вызывает.Существует ли функция, которая принудительно завершает работу программы (что-то вроде kill в Linux), чтобы операционная система освобождала память?Я мог бы использовать эту функцию в событии выхода из приложения.
Я знаю, что это будет ужасное решение, потому что оно просто скрывает проблему.
Я просто спрашиваю из чистого любопытства, поэтому, пожалуйста, не давайте мне -1:)
Я пытался exit(0)
из stdlib, но это не помогло.
РЕДАКТИРОВАТЬ:
Спасибо за ваши многочисленные ответы :) Я использую Builder C ++ 6 (я знаюэто устарело, но по некоторым причинам я должен был использовать это).Мое приложение использует библиотеку для нейронных сетей (FANN).Используя отладчик, я обнаружил, что программа аварийно завершает работу:
~neural_net()
{
destroy();
}
destroy () несколько раз вызывает другую функцию fann_safe_free (ptr), то есть:
#define fann_safe_free(x) {if(x) { free(x); x = NULL; }}
Библиотека работает отлично, проблемапоявляется только тогда, когда это делает уборку.Вот почему я спросил о столь жестоком решении.Мое приложение многопоточное, но другие потоки работают с другими данными.
Я буду анализировать свой код в n-й раз (ошибка должна быть где-то), спасибо за все ваши советы:)