将数组从c返回到python c类型

将数组从c返回到python c类型,python,c,ctypes,Python,C,Ctypes,所以我在c中有以下方法 rx_data_t readBuffer(HANDLE connection) { rx_data_t buffer[512]; _read_receiver_buffer(connection, &buffer[0]); return buffer; } 结果从_read _receiver _bufferfine返回,我可以在buffer中迭代,没有问题 但是,我在使用ctypes库将结果返回Python时遇到了问题 rx_dat

所以我在c中有以下方法

rx_data_t readBuffer(HANDLE connection)
{
    rx_data_t buffer[512];

    _read_receiver_buffer(connection, &buffer[0]);

    return buffer;
}
结果从_read _receiver _bufferfine返回,我可以在buffer中迭代,没有问题

但是,我在使用ctypes库将结果返回Python时遇到了问题

rx_data_t是指向具有以下布局的结构数组的指针:

{
    unsigned long receive_time;
    unsigned short low;
    unsigned short high;
} rx_data_t;

这甚至不应该编译。数组作为指向第一个元素的指针返回,因此返回的是
rx\u data\u t*
指针,而不是
rx\u data\u t
结构。而且
缓冲区
数组是在堆栈上分配的,因此返回指向它的指针是没有意义的。您需要为阵列
malloc
存储,这反过来意味着您需要
在不再需要时释放
分配的内存。或者,或者使
缓冲区
静态
,在这种情况下,当您从函数返回时,存储会持续存在。但是,该函数将不会是可重入/线程安全的,如果你想在多线程程序中使用它,你必须提供适当的同步…你解决了你的问题吗?对不起,我真的不记得了,我有一段时间没有参与该项目了