¿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?

Respuestas a la pregunta(1)

Su respuesta a la pregunta