Правильный способ вызова «realloc» в Swift с массивом Float?
Я пытаюсь выяснить, какой размер отправить "realloc", когда я вызываю его через Swift.Кажется, я должен добавить дополнительный байтно я не понимаю почему.
typealias Floats = UnsafeMutablePointer<Float>
let FLOAT_SIZE = sizeof( Float )
func floats_realloc( floats:Floats, qty_of_floats:Int ) -> Floats {
let KLUDGE = 1 // Why?
let qty_of_bytes = ( qty_of_floats * FLOAT_SIZE ) + KLUDGE
let realloced_floats = Floats(
realloc( floats, UInt( qty_of_bytes ) )
)
return realloced_floats
}
Если я установлю здесь KLUDGE на 0, это то, что происходит, когда я пытаюсь освободить место для одного нового члена в массиве из трех членов:
В:[0,9, 0,9, 0,9]
Из:[0,0, 0,0, 0,9, 0,0]
То, что я ожидал бы, это:
Из:[0,9, 0,9, 0,9, 0,0]
Массивы, которые я отправляю, создаются в Swift, используя
var foo_floats = Floats.alloc(QTY_OF_FLOATS)
Что не так с моим звонком в realloc?