[Python-Dev] Memory management in the AST parser & compiler
Thomas Lee
krumms at gmail.com
Wed Nov 16 13:05:09 CET 2005
Niko Matsakis wrote:
>>Boy am I wanting RAII from C++ for automatic freeing when scope is
>>left. Maybe we need to come up with a similar thing, like all memory
>>that should be freed once a scope is left must use some special struct
>>that stores references to all created memory locally and then a free
>>call must be made at all exit points in the function using the special
>>struct. Otherwise the pointer is stored in the arena and handled
>>en-mass later.
>>
>>
>
>That made sense. I think I'd be opposed to what you describe here
>just because I think anything which *requires* that cleanup code be
>placed on every function is error prone.
>
>
>
Placing it in every function isn't really the problem: at the moment
it's more the fact we have to keep track of too many variables at any
given time to properly deallocate it all. Cleanup code gets tricky very
fast.
Then it gets further complicated by the fact that
stmt_ty/expr_ty/mod_ty/etc. deallocate members (usually asdl_seq
instances in my experience) - so if a construction takes place, all of a
sudden you have to make sure you don't deallocate those members a second
time in the cleanup code :S it gets tricky very quickly.
Even if it meant we had just one function call - one, safe function call
that deallocated all the memory allocated within a function - that we
had to put before each and every return, that's better than what we
have. Is it the best solution? Maybe not. But that's what we're looking
for here I guess :)
More information about the Python-Dev
mailing list