重叠访问指针

时间:2017-11-04 19:29:26

标签: swift pointers swift4

我试图在Swift 4中运行swix。我已经解决了出现的大多数初始问题,但是还有一个问题我还不够了解即将解决。它是同一错误的三个实例,请参见下面的代码

var nc = __CLPK_integer(N)
dgetrf_(&nc, &nc, !y, &nc, &ipiv, &info)
  

重叠访问' nc',但修改需要独占   访问;考虑复制到本地变量

关于如何解决这个问题的任何想法?

1 个答案:

答案 0 :(得分:7)

这是SE-0176 Enforce Exclusive Access to Memory的结果,它是在 Swift 4:中实现的 __m的{​​{1}},__n__lda参数具有该类型 dgetrf_(),即使指向变量没有变异(但编译器不知道!)和 你将同一个变量UnsafeMutablePointer<>的地址传递给它们中的所有三个。

有两种可能的解决方案:附加变量副本:

nc

var nc1 = nc, nc2 = nc dgetrf_(&nc, &nc1, &matrix, &nc2, &ipiv, &info) ,因为不安全的指针不使用任何主动执行:

withUnsafeMutablePointer