gethostbyname関数は無駄がなく思えるのですが、MSDNでは「これからはgetddrinfoを使っていけ」みたいなことをgethostbyname関数の説明に加えています。
gethostbyname関数もIPの長さは可変に対応してますよね?
何の都合があってgetaddrinfoを使わなければいけないのでしょうか。
getaddrinfoって、なんだかややこしい割に得られる情報が大したことない(他の手段で簡単に得られる)し、ai_canonnameなど、指定した情報がそのまま格納されるだけな気がしますが・・。
No.1ベストアンサー
- 回答日時:
最大の理由は、gethostbyname が返す領域のメモリが非常に扱いにくいからだったかと。
古いC言語の関数にありがちな一見簡単に使えるが危険も多い用法で、戻り値の格納領域を gethostbyname の内部で持つので、この領域の開放タイミングがライブラリ提供側には判断ができず。
ユーザ側での排他制御を前提としたり、必要に応じて結果をコピーする必要がでたり、スレッドセーフティ等の面で問題が見えてきたので、これが getaddrinfo が新しく策定された動機のはずです。
回答どうもありがとうございます。
あぁHOSTENT構造体は1つしか作成できないのに対してADDRINFO構造体はいくつでも作成可能というメリットはあるみたいですね。
でも、ソースを見るときに見にくいことは見にくいですよねぇ・・。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Excel関数 情報引用する方法 4 2022/07/31 20:59
- Visual Basic(VBA) Vba LongPtrについて教えてください 2 2022/08/19 11:14
- VPN 無料のwifiはなぜ危険性高い? VPN プライベートDNSモードにすれば安全? 2 2022/06/04 18:23
- 大学受験 文系の学部についてです。 将来に使えそうな知識を得るために、 経済学部や商学部に入って簿記を学んだり 3 2022/10/02 16:05
- オープンソース ChatGPTをスプレッドシートと連携して自動でリサーチしたいんですがうまく出来ません。。。 1 2023/05/05 15:59
- その他(OS) Windowsで大量の画像サイズを半自動で変更する方法 6 2023/02/17 08:45
- Ruby 初心者プログラミング 3 2022/10/12 11:31
- 知人・隣人 就活の合同説明会について マイナビやリクナビ、その他就活サイトが主催となり、少し大きな会場で数十社が 3 2023/02/22 10:44
- 日本語 きみの嫁さんは私が見つけてあげるよ。 11 2022/11/13 21:01
- 統計学 アンケート調査のデータ比較をする際の統計分析方法の選択に迷っています 5 2022/04/15 01:05
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
callocの処理速度
-
mallocについて
-
OpenCV cvLoadImageについて
-
newしないオブジェクトについて
-
Accessで、メモリを開放するタ...
-
ヒープメモリの解放について
-
reallocについて
-
void*型のデータサイズ
-
仮想メモリでない環境でのmallo...
-
グローバル変数のサイズ
-
指定したメモリアドレスの値の...
-
プログラムが途中で強制終了し...
-
fread関数および動的なメモリ確...
-
メモリ不足になってしまう。
-
Win32APIでのメモリ管理について
-
HEAP に関すること
-
【速いブラインドタッチ】手を...
-
VBAにてcolorindexを変数に格納...
-
日付チェック関数について
-
C言語 配列の長さの上限
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
c言語のポインタへの文字列入力...
-
allocってなんですか?
-
newしないオブジェクトについて
-
mallocについて
-
配列の添え字の最大数とは?
-
ヒープメモリの解放について
-
ビットをローテートするプログ...
-
C++で、メンバもヒープに確保さ...
-
malloc呼び出し時のセグメンテ...
-
プログラムが途中で強制終了し...
-
指定したメモリアドレスの値の...
-
スタック破壊の上手な見つけ方...
-
void*型のデータサイズ
-
ポインタのポインタの初期化法
-
free関数で動作が止まる
-
callocの処理速度
-
MSDNがgethostbynameではなくge...
-
C++のnewで確保したメモリーの...
-
sprintf()の使い方について
-
Accessで、メモリを開放するタ...
おすすめ情報