2024-05-14 18:45:07 发布
网友
短版本: 如何获取ctypes指针指向的地址?
长版本: 我已经将一个python函数注册为一个C库的回调函数。C库需要void (*p_func)(char stat, char * buf, short buf_len)的函数签名,因此我注册了一个合适的python函数。当我进入python函数时,我想知道由buf指向的内存地址。我该怎么做?
void (*p_func)(char stat, char * buf, short buf_len)
buf
real_adr = cast(anyctypespointer, c_void_p).value
适用于任何缺少.content的ctypes指针甚至函数指针等
.content
我通过阅读文档自己解决了这个问题。
我想知道一个库分配的内存块的内存位置。我有指向该块的ctypes指针。获取我使用的块的内存地址ctypes.addressof(p_block.contents)。
ctypes.addressof(p_block.contents)
我对p_block.contents != p_block.contents的理解出现了混乱,但后来我意识到所有p_block.contents对象都有相同的底层缓冲区。使用ctypes.addressof获得底层缓冲区的地址。
p_block.contents != p_block.contents
p_block.contents
ctypes.addressof
适用于任何缺少
.content
的ctypes指针甚至函数指针等我通过阅读文档自己解决了这个问题。
我想知道一个库分配的内存块的内存位置。我有指向该块的ctypes指针。获取我使用的块的内存地址
ctypes.addressof(p_block.contents)
。我对
p_block.contents != p_block.contents
的理解出现了混乱,但后来我意识到所有p_block.contents
对象都有相同的底层缓冲区。使用ctypes.addressof
获得底层缓冲区的地址。相关问题 更多 >
编程相关推荐