Avatar
結局こういう感じになりました: bool solve(..., LBVectorComponent **xcomps, size_t *xcomps_cnt); var xcomps_ptr: UnsafeMutablePointer<LBVectorComponent>? = nil var xcomps_c = 0 if LinBoxWrapper.solve(..., &xcomps_ptr, &xcomps_c) { guard let xcomps_ptr = xcomps_ptr else { fatalError() } let buff = UnsafeBufferPointer(start: xcomps_ptr, count: xcomps_c) defer { xcomps_ptr.deallocate() } return DVector(size: size.cols, components: buff) } else { ... (edited)
2:03 AM
呼び出し側から dealloc を呼ばないといけないので Mutable じゃなきゃいけなくて,はじめに nil を入れた状態で渡したいので _Nonnull にもできなそうでした。