Ios Swift将双值分配给malloc';d阵列

Ios Swift将双值分配给malloc';d阵列,ios,swift,Ios,Swift,我一直在玩swift,遇到了以下问题: var foo: Double = 5 var buffer = malloc(10) buffer[0] = foo //Does not compile! 我怎样才能给数组中的一个元素分配一个特定的值呢?你是在混合C和swift,malloc(10)并没有给你一个Double的数据类型,它给你一个void的类型*我相信,这会转化为Unsafemtablepointer,我相信如果我记得正确,请有人纠正错误 如果您想要一个可变的double数组,那么您

我一直在玩swift,遇到了以下问题:

var foo: Double = 5
var buffer = malloc(10)
buffer[0] = foo //Does not compile!

我怎样才能给数组中的一个元素分配一个特定的值呢?

你是在混合C和swift,malloc(10)并没有给你一个Double的数据类型,它给你一个void的类型*我相信,这会转化为Unsafemtablepointer,我相信如果我记得正确,请有人纠正错误

如果您想要一个可变的double数组,那么您需要执行以下操作

var foo: Double = 5
var buffer = [Double]()
buffer.append(foo) 

如果您想保留已分配的内存,请参阅以下有关如何正确设置的答案:

这样做:

var buffer = UnsafeMutablePointer<Double>(malloc(10))

var buffer=unsafemeutablepointer(malloc(10))
或者正如用户3441734所指出的那样,为了看起来更干净

var buffer = UnsafeMutablePointer<Double>.alloc(1)
buffer.dealloc(1)

var buffer=unsafemeutablepointer.alloc(1)
缓冲区解除锁定(1)

您只需创建一个双精度数组即可

var array = [Double](count: 10, repeatedValue: 0.0)
然后为其赋值:

array[9] = 1.23

把这些记忆转换成有用的东西,你不能把数字分配给
void*
。这不是Swift问题,而是C问题。您收到的错误消息是什么?如果您只需要将此对象添加到数组:
var buffer=[foo]
@CurlyCorvus,错误为
预期声明
。您给出的代码给出了
致命错误:数组索引超出范围
。您需要为数组分配一个大小,或者使用
.append()
。为此,您需要执行
var array=[Double](count:10,repeatableValue 0)
。我在Swift中搜索了固定大小的数组分配,但没有找到这个。我会改变我的答案。谢谢你的编辑,但我想保持Malc的答案,所以我将包括BOTVAR缓冲器= unSabeMutable指针(Maloc(10))不会编译没有导入基础。alloc()是“纯粹的”快速且稍微安全的。顺便问一下,3倍于我的结构需要多少内存?(可能是平台特定的)。使用MaloC也被Apple拒绝。我提供的答案链接解释了如何使用MalOC,它告诉你导入基础,所以在我的答案中不需要冗余,即使Maloc被苹果公司劝阻,问题的创建者正在询问如何用Maloc来完成它。因此,如何使用malloc也应该为这篇文章提供一个答案。
array[9] = 1.23