Suppose I have the following C code:
void freeSomeType(SomeType_t **ptr)
{
free(*ptr);
*ptr = NULL;
}
void func(SomeType_t **ptr)
{
freeSomeType(ptr);
*ptr = malloc(...);
}
Then, suppose I call it from python land like so:
ptr = ffi.new("SomeType_t **")
# Init and do stuff with ptr...
lib.func(ptr)
In essence, the pointer holding the actual SomeType **
data inside the ptr
‘s cdata
object has changed its value. What happens if I then do:
lib.freeSomeType(ptr)
del ptr
- Is this safe to do?
- Do I need to worry about data ownership or memory leaks?