It does not make a copy, as far as I know. According to the documentation, it
Invokes the given closure with a pointer to the given argument.
Compare also Allow let-to-pointer conversions, where it is said that
Therefore
let result = withUnsafePointer(to: actual_data, { some_c_function($0)} )
should be what you are looking for.