gpt4 book ai didi

swift - 重叠访问指针

转载 作者:搜寻专家 更新时间:2023-10-30 22:10:12 25 4
gpt4 key购买 nike

我正在尝试在 Swift 4 中运行 swix。我已经解决了最初出现的大部分问题,但还有一个我不太了解如何解决。这是同一个错误的三个实例,请参阅下面的代码

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

Overlapping accesses to 'nc', but modification requires exclusive access; consider copying to a local variable

关于如何解决这个问题有什么想法吗?

最佳答案

这是 SE-0176 Enforce Exclusive Access to Memory 的结果,在 Swift 4 中实现:__m , __n , 和 __lda dgetrf_() 的参数有类型 UnsafeMutablePointer<> ,即使指向的变量没有发生变化(但编译器不知道!)和你传递相同变量的地址 nc给他们三个。

有两种可能的解决方案: 额外的变量副本:

var nc1 = nc, nc2 = nc
dgetrf_(&nc, &nc1, &matrix, &nc2, &ipiv, &info)

withUnsafeMutablePointer ,因为不安全指针不使用任何主动执行:

withUnsafeMutablePointer(to: &nc) {
dgetrf_($0, $0, &matrix, $0, &ipiv, &info)
}

关于swift - 重叠访问指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47114737/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com