On Sun, Jan 8, 2017 at 8:25 AM, Armin Rigo <armin.rigo at gmail.com> wrote: > > c_raw = ctypes.PYFUNCTYPE(ctypes.c_void_p, ctypes.c_void_p)(lambda p: p) Use ctypes.addressof. > addr = c_raw(ctypes.pointer(T.from_buffer(m))) > b = ctypes.cast(addr, ctypes.POINTER(T)).contents ctypes.cast uses an FFI call. In this case you can more simply use from_address: b = T.from_address(ctypes.addressof(T.from_buffer(m))) There's no supporting connection between b and m. If m was allocated from a heap/pool/freelist, as opposed to a separate mmap (VirtualAlloc) call, then you won't necessarily get a segfault (access violation) if b is used after m has been deallocated or internally realloc'd. It can lead to corrupt data and difficult to diagnose errors. You're lucky if it segfaults.
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4