# Повторное или несовместимое освобождение

RuleID: portfolio.life.03@1.0.0
Status: recovery-required
Catalog snapshot: 4558458d

Accepted subset is bounded. If required evidence is incomplete, the affected result is unknown.

## V-LIFE-03 — Повторное или несовместимое освобождение

Повторное освобождение или несовместимая пара allocator/deallocator повреждает память. Совпадение типов указателей не доказывает совместимость.

Status: recovery-required

Scope notes: Source producer требует восстановления и квалификации. Если необходимые факты не получены, результат — unknown, а не «ошибки нет».

### Before (illustrative)

```swift
let p = UnsafeMutablePointer<Int>.allocate(capacity: 1)
p.deallocate()
p.deallocate()
```

### After (illustrative)

```swift
let p = UnsafeMutablePointer<Int>.allocate(capacity: 1)
defer { p.deallocate() }
// Использование без передачи владения.
```

Boundary: Различные generations и idempotent close

---
Language: ru
Canonical: https://docs.swift-analyzer.com/catalog/portfolio.life.03/
Source revision: 4558458d
