因为 structs
在 Swift 中是值类型,所以它们的内存当然是分配在栈上的。
我的问题是,当 struct
的不同实例分配给同一个变量时,为什么内存地址没有改变。
解释:
对于下面的struct
,
struct Person {
var name: String
init(_ name: String) {
self.name = name
}
}
如果我创建 Person
的实例,例如,
var p = Person("John")
withUnsafePointer(to: &p) {
print("\(p) has address: \($0)") //0x000000010dcea3c0
}
p = Person("Jennifer")
withUnsafePointer(to: &p) {
print("\(p) has address: \($0)") //0x000000010dcea3c0
}
p = Person("Lisa")
withUnsafePointer(to: &p) {
print("\(p) has address: \($0)") //0x000000010dcea3c0
}
为什么每次都打印同一个地址?
最佳答案
这是因为您使用的是相同的变量。举个例子
var p(这是分配内存来保存你的值)
现在您只是更改值而不是已经分配给内存位置的变量。
关于swift - 为什么内存地址不会因不同的结构实例而改变?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57529164/