в общем сам со всем рзобрался.
просто надо сначала получить адрес куда нить, а потом по этому адресу уже прочесть. а для освобождения передать адрес и все.
но вот осталась еще одна трабла.
имеем следующий код на С (бибилотека):
#include <stdlib.h>
struct test_struct
{
void *addr_struct;
char f;
int d;
};
struct test_struct *nza_connect(void)
{
struct test_struct *connection;
connection = malloc(sizeof(struct test_struct));
if(connection == NULL)
{
return 0;
}
connection->addr_struct = connection;
connection->f = 'd';
connection->d = 1456;
return connection;
}
вызываем эту функцию из Python:
...
class t_struct(Structure):
_fields_ = [('addr', c_void_p), ('f', c_char), ('d', c_int)]
addr_struct = nza.nza_connect()
buffer = (test_struct).from_address(addr_struct)
в итоге получаем что переменная “addr_struct” не равна переменной buffer.addr
порядок адресов следующий (к примеру):
addr_struct = 33580944
buffer.addr = 6257553902180
почему?