[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
No Subject
Greetings,
I'm currently developing an interface between mzscheme - which i like
a lot, thank you for this fantastic program and rich documentation! -
and matlab, which is great for number-crunching.
It's already working but still bare-bones and i want to improve on it.
Sorry for the many questions, but as you will see i have no clue about
the behaviour of the garbage-collector of mzscheme ... as well as any
other garbage-collector or garbage-collection in general to be honest.
I have defined a new Scheme_Type like this:
typedef struct {
Scheme_Type type;
MZ_HASH_KEY_EX
void *data_ptr;
Scheme_Manager_Reference *manager_ptr;
} Scheme_Matlab_type;
data_ptr points to the matlab-data which can not be scheme_malloced
and must be explicitly freed.
My questions concerning this szenario:
- Do i need the MZ_HASH_KEY_EX?
- Do i need the reference to the custodian?
It's only part of the structure because in case the object gets
garbage-collected - and its finalizer has been evoked - the
finalizer might call 'scheme_remove_managed'. Is this necessary?
- Do i need to use custodians at all? Maybe registering a finalizer is
sufficient?
- Should i malloc instances of this new type with
'scheme_malloc' or rather use 'scheme_malloc_atomic' ?
- Will all allocated memory be freed after killing the scheme-process?
- Should i use 'scheme_register_finalizer' or 'scheme_add_finalizer'?
Every hint would help me a lot.
Thanks,
Sebastian