Базовая гарантия безопасности (basic exception safety) означает, что при возникновении исключения программа находится в корректном, хотя и не обязательно предсказуемом, состоянии. Ресурсы, такие как динамическая память или файловые дескрипторы, которые были захвачены функцией до возникновения исключения, будут корректно освобождены.
Это достигается благодаря использованию RAII (Resource Acquisition Is Initialization) — идиомы, где владение ресурсом ассоциируется с жизненным циклом объекта. Конструктор объекта захватывает ресурс, а деструктор его освобождает. При раскрутке стека из-за исключения деструкторы объектов, созданных в текущем блоке, вызываются автоматически, гарантируя освобождение ресурсов.
cpp
При базовой гарантии:
Это слабее сильной гарантии (состояние программы не меняется при исключении) и нет гарантии (состояние программы не определено, возможны утечки). В стандартной библиотеке многие операции предоставляют базовую гарантию, что является минимальным требованием для корректной работы с исключениями.