[EMAIL PROTECTED] said: Hardly a beginners question :-) But anyway:
> Hi , > I found memory leak with the perl API "perl_eval_sv" . > Iam attaching the c code that i used as a sample to come to the > conclusion that the > api "perl_eval_sv" has got memory leaks . > Iam stuck with this . > Could you suggest some way out of this ? You have forgotton to mention anything about your environment. At least the version of perl you are running would be useful, and preferably the whole output from perl -V. > #include <EXTERN.h> > #include <perl.h> > > static PerlInterpreter *my_perl; > int main (int argc, char **argv, char **env) > { > char *embedding[] = { "", "-e", "0" }; > > my_perl = perl_alloc(); > perl_construct( my_perl ); > > perl_parse(my_perl, NULL, 3, embedding, NULL); > perl_run(my_perl); > SV* sv = newSVpv("Hello",0); > while(1) > { > perl_eval_sv(sv, G_VOID | G_DISCARD); > } > perl_destruct(my_perl); > perl_free(my_perl); > } > > The above code leaks memory which increases by 8k in every 5 minutes . As it happens, I believe this particular leak is fixed by a patch I sent in just last week :-) If you are interested in the details, one op in every 65536 leaks because the op sequence number wraps around, and 65535 (-1) is a magical number the compiler backend uses to flag ops that should not be freed. So, if that is the case you have three options: - grab a copy of bleadperl (the development sources), where the patch has already been applied - grab a copy of my patch and apply it to whatever version of perl you choose (look for my recent posts in the p5p archives) - not worry about it, after all, for how much of its life will your program be allocating opcodes, and even allocating at top whack, you're only leaking 8k every 5 minutes. -- Paul Johnson - [EMAIL PROTECTED] http://www.pjcj.net -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]