我正在使用Swifts UnsafeMutablePointer
类型进行搜索,并遇到了dealloc(num:)
方法。
现在我对Swift中指针如何工作的知识都是基于假设,这些假设似乎一直持续到现在为止:
UnsafeMutablePointer<Type>.alloc(num:)
方法为操作系统提供一块内存,该内存大到足以保存给定num
的{{1}}个值Type
方法将initialize(newValue:)
放在指针指向的内存地址newValue
属性允许我读取和写入存储在指针地址的值现在here memory
方法的说明如下:
取消分配
dealloc(num:)
个对象。num 要解除分配的对象数。应该与传递给
num
的值完全匹配(不能进行部分解除分配)。
所以我假设alloc()
做的是告诉操作系统它可以有内存块,它从指针指向的地址开始并在以下位置结束:(地址+ sizeof(Type)⋅num)。
那么为什么部分解除分配不可能呢? 问题是,某些内存可能永远保持分配(只要应用程序运行)?