ポインタの勉強中です。

class BaseClass{
    var value : Int
    init(_ a:Int){
        self.value = a
    }
    deinit{
        print("BaseClass:\(self.value)")
    }

}

func ptr2<T: Any>(p: UnsafeMutablePointer<T>) -> UnsafeMutablePointer<T> {
    return p
}

do{
    var i = BaseClass(100)
    var p = ptr2(p:&i)
    print(type(of:p))

    var array = UnsafeMutableBufferPointer<BaseClass>(start:p,count:100)
    print(type(of:array))
    print(array.count)
    array[1] = BaseClass(200)
}

array[1] = BaseClass()が、解放されていません
なぜでしょうか?