通过python/ctypes获取memoryrange的endmemory地址

2024-09-30 08:28:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在为python中的(硬件)C接口创建一个非常基本的(覆盖)单元测试。你知道吗

C接口的函数需要内存地址,因为它直接与内存通信。你知道吗

该函数的原型是:

void function( ulong startAddress, ulong endAddress, ulong curAddress, nofPaddingElements )

startAddress、endAddress和curAddress基本上是一个结构数组的内存地址。你知道吗

在web上(和stackoverflow;-))我发现了一些引用,如果我想用ctypes做一些事情,那就是我使用的。你知道吗

对于startAddress和curAddress,可以在http://starship.python.net/crew/theller/ctypes/tutorial.html#arrayshttp://starship.python.net/crew/theller/ctypes/tutorial.html#pointers之后获得指向第一个条目地址的指针和指向当前条目地址的指针。你知道吗

但是endAddress是个问题。
它是需要由函数分配的内存区域的实际结束地址。
因此,对于一个长度为10的int数组,如果你理解了我的意思,它就意味着“i[10]的地址”(实际上,人们当然只能使用i[0]直到i[9],但我的意思是i[10]第10个条目结束的地址/第11个条目开始的地址==>;数组的结束地址)。你知道吗

有人知道我如何通过python/ctypes获得这个结束地址吗?你知道吗

(重构C代码,使其不需要结束地址,这不是一个选项,它已经正常工作多年了,它只是没有unittest)

顺便说一句,我目前使用的软件版本是python2.5(以后的版本使用python2.7,但首先需要在此版本上开发)


Tags: 函数内存版本httpnet地址条目数组

热门问题