【发布时间】:2019-12-15 23:14:16
【问题描述】:
我想将指针的指针值分配给手动分配的字符串。 换句话说,我想写这样的东西:
let pointer = UnsafeMutablePointer<String>.allocate(1)
pointer.pointee = "Hello, World!"
// ...
pointer.deallocate()
不幸的是,这段代码有时会在第二行(即赋值)崩溃。
如果指针的类型是数组,则可以观察到相同的行为。
但是,如果指针的类型不包含动态分配的存储(例如简单的Int),该程序似乎永远不会失败。
这表明只有当指针的类型包装指向堆的指针时才会出现问题,例如String 或Array。
有没有办法解决这个问题?
我试图实现这一目标的原因是创建一个通用的内存领域。
【问题讨论】:
标签: swift memory-management unsafe-pointers