ぜのぜ

しりとりしようぜのぜのぜのぜ

19日目 お酒が入っているので追加調査は許して欲しい

日記

今日は金曜日なのでお酒を飲みながら書いてる.

今日書いたコード

func printPointer(of some: Any) {
    withUnsafePointer(to: some, { print($0) })
}

var str: String? = "Hello, World!!"
var substr: Substring? = str![..<str!.firstIndex(of: ",")!]

print("---")
print("str: \(str)")
printPointer(of: str)
print(MemoryLayout.size(ofValue: str))
print("substr: \(substr)")
printPointer(of: substr)
print(MemoryLayout.size(ofValue: substr))

str = nil
print("---")
print("str: \(str)")
printPointer(of: str)
print(MemoryLayout.size(ofValue: str))
print("substr: \(substr)")
printPointer(of: substr)
print(MemoryLayout.size(ofValue: substr))

substr = nil
print("---")
print("str: \(str)")
printPointer(of: str)
print(MemoryLayout.size(ofValue: str))
print("substr: \(substr)")
printPointer(of: substr)
print(MemoryLayout.size(ofValue: substr))
---
str: Optional("Hello, World!!")
0x000000016b7932e0
16
substr: Optional("Hello")
0x000000016b7932e0
32
---
str: nil
0x000000016b7932e0
16
substr: Optional("Hello")
0x000000016b7932e0
32
---
str: nil
0x000000016b793248
16
substr: nil
0x000000016b793248
32

初めて知ったこと

Substringというやつ.これはもとのStringと同じメモリ領域を指しているという話だったのでもとのStringを開放するとクラッシュするのではと思ったがしなかった.参照カウントが残っている?と思ったがStringは値型だった気がする.

お酒が入っているので追加調査は許して欲しい.