简短版本: 如何获取ctypes指针指向的地址?
长版:
我已经将python函数注册为带有C库的回调。 C库需要void (*p_func)(char stat, char * buf, short buf_len)
的函数签名,所以我注册了一个合适的python函数。当我进入python函数时,我想知道buf
指向的内存地址。我怎么能这样做?
答案 0 :(得分:9)
我已经通过阅读文档解决了这个问题。
我想知道库分配的内存块的内存位置。我有指向所述块的ctypes指针。要获取我使用ctypes.addressof(p_block.contents)
的块的内存地址。
围绕我对p_block.contents != p_block.contents
的理解产生了混淆,但后来我意识到所有p_block.contents
个对象都具有相同的底层缓冲区。使用ctypes.addressof
获取底层缓冲区的地址。
答案 1 :(得分:0)
real_adr = cast(anyctypespointer, c_void_p).value
适用于任何类型的ctypes指针-甚至缺少.content
的函数指针等