Правильный способ вызова «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?

Ответы на вопрос(1)

Ваш ответ на вопрос