伊瀬です。
文面からは以下のどちらが問題なのか読み取りずらく、混乱した返答になって
いるかもしれませんが、ご容赦ください。
gethostbyname()を使うとメモリリークする
gethostbyname()を使うとメモリ使用量が大きい
メモリリークに関して:
添付のプログラムをうごかしてみました。私の環境ではリークしていない
ようです。(10000回程呼んでもメモリ使用量は増えない)
メモリ使用量が大きいことに関して:
#if 0 / #if 1を変えることによりサイズは増減しますが、使っている関数
が異なるので、許容範囲内のようにおもいます。
もし、メモリ的にこの使用量が大きすぎるようでしたら、所望の関数を自作
するか、gethostbyname()を呼んだスレッドを捨てることで解決できそうな
気がします。
以上、お役に立てば幸です。
> 早速で申し訳ないのですが、gethostbyname()にてメモリリークが発生し、
> 解消方法が分かりません。
(省略)
> また、確認方法として
> struct in_addr addr;
> #if 0
> if((servhost = gethostbyname(host)) == NULL){
> unsigned long addr;
> addr = inet_addr(host);
> // サーバのアドレスからサーバのアドレスを設定
> servhost = gethostbyaddr((char *) &addr, sizeof(addr), AF_INET);
> if(servhost == NULL){
> return(-1);
> }
> }
> memcpy((char *)&server.sin_addr, servhost->h_addr, servhost->h_length);
> #else
> if( !inet_aton( host, &addr ) ){
> return -1;
> }
> memcpy((char *)&server.sin_addr, &addr, sizeof( struct in_addr ));
> #endif
> とし、リクエストのURLをIP指定でメモリーの状況を確認した
> ところ、ほとんど増えないんです・・・やはりネックはこの
> 関数か?これだけでかなりメモリーの使用量が減りました。
>
> 以上、どなたか解決方法をご存知でしたらお願い致します。
>
> --
> 近藤 正博 <echo@xxxxxxxxxxxxxxx>
>
>