¿Forma correcta de llamar "realloc" en Swift con una matriz Float?
Estoy tratando de averiguar qué tamaño enviar "realloc" cuando lo llamo a través de Swift.Parece que tengo que agregar un byte extra, pero no entiendo por qué.
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
}
Si configuro KLUDGE a 0 aquí, esto es lo que sucede cuando intento hacer espacio para un nuevo miembro en una matriz de tres miembros:
En:[0.9, 0.9, 0.9]
Fuera:[0.0, 0.0, 0.9, 0.0]
Lo que esperaría es:
Fuera:[0.9, 0.9, 0.9, 0.0]
Los arreglos que estoy enviando se crean dentro de Swift, usando
var foo_floats = Floats.alloc(QTY_OF_FLOATS)
¿Qué hay de malo en mi llamado a realloc?