swift - 重叠访问指针

标签 swift pointers swift4

我正在尝试在 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/

相关文章:

ios - 解析查询结果未附加到新数组

ios - 使用 ID 列表的 Firebase 查询(iOS)

c - "Read only"将驱动程序函数分配给 netdev_ops 函数指针时出错

ios - 将 UIImage 加载到 WebView Swift 4

ios - 使用 Firebase 的 Xcode 编译错误

swift - 如何在我的 Swift 游戏中对事件进行排队

c++ - 指向 char* 值的指针中的问题

c - 使用 calloc 设置双指针

swift - 我需要帮助在格式化字符串后删除下划线

ios - 在 swift4 中将 JSONresponse 转换为 NSDATA 或 NSDICTIONARY