我想将指针的指针值分配给手动分配的String。换句话说,我想写这样的东西:
let pointer = UnsafeMutablePointer<String>.allocate(1)
pointer.pointee = "Hello, World!"
// ...
pointer.deallocate()
很遗憾,此代码有时在第二行(即分配)崩溃。
如果指针的类型是数组,则可以观察到相同的行为。但是,如果指针的类型不包含动态分配的存储(例如简单的Int
),则该程序似乎永远不会失败。这表明仅当指针的类型包装指向堆的指针(例如String
或Array
)时,才会出现此问题。
是否有解决此问题的方法?
我尝试实现此目的的原因是创建一个通用的内存竞技场。
我想将指针的指针值分配给手动分配的String。换句话说,我想写这样的东西:let pointer = UnsafeMutablePointer
刚刚通过类型化指针分配的内存或已取消初始化的内存处于未初始化状态。必须初始化未初始化的内存,然后才能对其进行读取。