参数对于 UnsafeMutablePointer<Type>.alloc() 有啥意义?
Posted
技术标签:
【中文标题】参数对于 UnsafeMutablePointer<Type>.alloc() 有啥意义?【英文标题】:What meaning does the parameter have for UnsafeMutablePointer<Type>.alloc()?参数对于 UnsafeMutablePointer<Type>.alloc() 有什么意义? 【发布时间】:2015-02-12 14:44:15 【问题描述】:假设我想在 Swift 中创建一个指向Int
的指针。从我所见,我会做this:
let pointer = UnsafeMutablePointer<Int>.alloc(1)
pointer.memory = 100
println(pointer) //prints 0x00007f8672fb7eb0
println(pointer.memory) //prints 100
现在,当我调用UnsafeMutablePointer<Int>.alloc(1)
时,1
表示什么?我假设它是从指针地址开始在内存中分配的Int
s 的数量。
所以1
将分配 8 个字节,2
将分配 16 个字节,依此类推...
这是真的吗?
如果是这样,Swift 使用 generic 类型为UnsafeMutablePointer<Type>
s 分配了多少内存?
【问题讨论】:
【参考方案1】:现在,当我打电话给
UnsafeMutablePointer<Int>.alloc(1)
时,1 是什么意思 表示?我假设它在内存中分配的 Ints 数量开始 从指针地址。
这是分配内存的项目数。
所以 1 将分配 8 个字节,2 将分配 16 个字节,依此类推... 这是真的吗?
几乎。一个Int
可以是 4 或 8 字节,具体取决于
架构。
如果是这样,Swift 分配了多少内存
UnsafeMutablePointer<Type>
使用泛型类型?
您不能为泛型类型分配内存。在那个点
alloc()
被调用,类型参数T
必须是已知的,要么给定
明确地或从上下文推断。
【讨论】:
以上是关于参数对于 UnsafeMutablePointer<Type>.alloc() 有啥意义?的主要内容,如果未能解决你的问题,请参考以下文章
Swift:无法将“UnsafeMutablePointer”类型的值转换为预期的参数类型“UnsafeMutablePointer”
swift3.0 无法将类型“[UnsafeMutablePointer<Int8>]”的值转换为预期的参数类型“UnsafeMutablePointer<Int8>?”
在 Swift 中使用带有 UnsafeMutableRawPointer 或 UnsafeMutablePointer 参数的 ObjC 函数?
无法转换“CGPoint!”类型的值到预期的参数类型'UnsafeMutablePointer<CGPoint>'
无法使用类型为“((AnyObject!,NSInteger,UnsafeMutablePointer<ObjCBool>)->())”的参数列表调用“enumerateObje