获取ctypes指针指向的内存地址

时间:2012-03-13 15:26:38

标签: python ctypes

简短版本: 如何获取ctypes指针指向的地址?

长版: 我已经将python函数注册为带有C库的回调。 C库需要void (*p_func)(char stat, char * buf, short buf_len)的函数签名,所以我注册了一个合适的python函数。当我进入python函数时,我想知道buf指向的内存地址。我怎么能这样做?

2 个答案:

答案 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的函数指针等