在Swift中,如何确定两个UnsafePointers是否引用相同的内存?

时间:2014-07-12 10:18:58

标签: pointers swift equality unsafe-pointers

我有两个类型&#34的变量; UnsafePointer< Float>"应该指向两个浮点数的C数组。

我已经知道如何访问他们指向的内存的值。

我不知道该怎么做,确定它们是否都引用相同的内存(即:两者都指向同一地址)。

如何检查两个UnsafePointers存储的内存地址是否相同?

1 个答案:

答案 0 :(得分:4)

在Swift中,UnsafePointer<T>符合Comparable协议,所以你可以 只需将指针与==进行比较即可。示例:C函数

float *foo(void);

映射到Swift为

func foo() -> UnsafePointer<Float>

并编译以下代码,并测试是否有两次后续调用该函数 返回相同的指针:

let p1 = foo()
let p2 = foo()
if p1 == p2 {
    println("equal")
}

正如约阿希姆在评论中所说,指针值是指向的内存地址。所以指针相等意味着它们指向相同的内存地址。