On Tue, 10 Dec 2002, Noel Gordon wrote: > Anyone else confirm that the following program compiled under > gcc 3.2, cygwin 1.3.17-1, on Win2k leaks memory? > > /*-----------------------------------------------------------*/ > > #include <netdb.h> > #include <stdio.h> > > int main() > { > struct hostent *host; > > while ( 1 ) > { > if ( ( host = gethostbyname( "localhost" ) ) != NULL ) > printf( "gethostbyname(): %s\n", host->h_name ); > } > }
Noel, >From http://www.opengroup.org/onlinepubs/007904975/functions/gethostbyaddr.html : The gethostbyaddr() and gethostbyname() functions *may* return pointers to static data, which may be overwritten by subsequent calls to any of these functions. The "may" above (emphasis is mine) means that the implementation is free to malloc a data structure and require the user to free it. Since you don't free the returned data structure in your program, it's quite possible that there's a leak. Also, Cygwin uses the gethostbyname from wsock32.dll, which may have different implementations on different systems. Thus, your best bet is to look up gethostbyname on MSDN for implementation details. Igor -- http://cs.nyu.edu/~pechtcha/ |\ _,,,---,,_ [EMAIL PROTECTED] ZZZzz /,`.-'`' -. ;-;;,_ [EMAIL PROTECTED] |,4- ) )-,_. ,\ ( `'-' Igor Pechtchanski '---''(_/--' `-'\_) fL a.k.a JaguaR-R-R-r-r-r-.-.-. Meow! "Water molecules expand as they grow warmer" (C) Popular Science, Oct'02, p.51 -- Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple Bug reporting: http://cygwin.com/bugs.html Documentation: http://cygwin.com/docs.html FAQ: http://cygwin.com/faq/