Swift中的Realloc UNSAFEMEUTABLEPOINTER导致错误
我正在将一些关于C指针的操作转换为SwiftSwift中的Realloc UNSAFEMEUTABLEPOINTER导致错误,swift,unsafemutablepointer,Swift,Unsafemutablepointer,我正在将一些关于C指针的操作转换为Swift var bits = UnsafeMutableBufferPointer<Int32>(start: nil, count: 0) var startIdx: UnsafeMutablePointer<Int32> = nil { didSet { bits = UnsafeMutableBufferPointer<Int32>(start: startIdx, count: bitsL
var bits = UnsafeMutableBufferPointer<Int32>(start: nil, count: 0)
var startIdx: UnsafeMutablePointer<Int32> = nil {
didSet {
bits = UnsafeMutableBufferPointer<Int32>(start: startIdx, count: bitsLength)
defer { bits.baseAddress.dealloc(bits.count) }
}
}
var size: Int = 0
var bitsLength: Int = 1
init(size: Int) {
self.size = size
self.bitsLength = (size + 31) / 32
self.startIdx = UnsafeMutablePointer<Int32>.alloc(bitsLength * sizeof(Int32))
}
func ensureCapacity(size: Int) {
if size > bitsLength * 32 {
let newBitsLength = (size + 31) / 32
startIdx = realloc(startIdx, sizeof(Int32) * newBitsLength)
// Cannot convert value of type `UnsafeMutablePointer<Int32>` to type 'UnsafeMutablePointer<Void>'(aka `UnsafeMutablePointer<()>`) in coercion
}
}
var bits=unsafemeutablebufferpointer(开始:nil,计数:0)
var startIdx:unsafemeutablepointer=nil{
迪塞特{
位=不可配置的缓冲指针(开始:startIdx,计数:位长度)
延迟{bits.baseAddress.dealloc(bits.count)}
}
}
变量大小:Int=0
变量位长度:Int=1
初始化(大小:Int){
self.size=大小
self.bitsLength=(大小+31)/32
self.startIdx=unsafemeutablepointer.alloc(位长度*sizeof(Int32))
}
函数容量(大小:Int){
如果大小>位长度*32{
设newBitsLength=(大小+31)/32
startIdx=realloc(startIdx,sizeof(Int32)*newBitsLength)
//无法在强制中将“Unsafemtablepointer”类型的值转换为“Unsafemtablepointer”(也称为“Unsafemtablepointer”)类型
}
}
我知道了
无法在强制中将类型为UnsafeMutablePointer
的值转换为类型为“UnsafeMutablePointer”(也称为UnsafeMutablePointer
)的值
有什么想法吗?这有助于:
startIdx = unsafeBitCast(realloc(startIdx, sizeof(Int32) * newBitsLength), UnsafeMutablePointer<Int32>.self)
startIdx=unsafeBitCast(realloc(startIdx,sizeof(Int32)*newBitsLength),UnsafeMutablePointer.self)