我有以下c代码:
rx_data_t* readBuffer()
{
rx_data_t buffer[512];
results = doSomething()
rx_data_t* newBuf = malloc(results.count());
for(i=0;i<results.count();i++)
{
newBuf[i].receive_time = buffer[i].receive_time;
newBuf[i].low = buffer[i].low;
newBuf[i].high = buffer[i].high;
}
return newBuf;
}
我在Python(3.4)中使用ctypes来获取此函数的结果,
class BufferResults(ctypes.Structure):
""" creates a struct to match rx_data_t
"""
_fields_ = [
('receive_time', ctypes.c_ulong),
('low', ctypes.c_ushort),
('high', ctypes.c_ushort)
]
self.lib.readBuffer.restype = ctypes.POINTER(BufferResults)
res = self.lib.readBuffer()
这是有效的,我得到了c结构的所有结果,但是如果我遍历res有数百个结果而不是我期待的那两个结果。
有什么我做错了或不做的事吗?
感谢。