Hans Aberg wrote:
> 
> On 7 Jan 2008, at 07:20, cwhite wrote:
> 
>> I use
>>
>> yylval.string_type = strdup(yytext);
>>
>> in my flex file but it seems that this is wasteful and it may cause  
>> memory
>> leaks. I thought that yytext gets replaced everytime the lexer is  
>> called so
>> how is this wasteful? How do I free yylval so that those don't happen?
>> Perhaps there is an alternative to strdup, I'd like to know what  
>> that is.
> 
> See 'man strdup'; memory must be freed using 'free'. Done say in the  
> actions, or using %destructor to do it during error recovers (see  
> Bison manual).
> 
>    Hans Aberg
> 
> _______________________________________________
> help-bison@gnu.org http://lists.gnu.org/mailman/listinfo/help-bison
> 
> 

So the solution is just 

%destructor                     { free($$); } IDENTIFIER STRING_CONSTANT

and 

free(yylval.string_type); 

Thanks!

-- 
View this message in context: 
http://www.nabble.com/how-to-free-yylval-tp14659563p14683202.html
Sent from the Gnu - Bison - Help mailing list archive at Nabble.com.



_______________________________________________
help-bison@gnu.org http://lists.gnu.org/mailman/listinfo/help-bison

Reply via email to