[解決済み] なぜmemsetではなくbzeroを使用するのですか?
質問
前学期に受講したシステム・プログラミングの授業で、基本的なクライアント/サーバーをC言語で実装することになったのですが、構造体を初期化する際に
sock_addr_in
やcharバッファ(クライアントとサーバーの間でデータをやり取りするために使用する)を使用するように教授から指示されました。
bzero
であり
memset
を使って初期化することができます。 その理由は説明されませんでしたが、正当な理由があるのでしょうか?
ここに書いてありますね。
http://fdiv.net/2009/01/14/memset-vs-bzero-ultimate-showdown
その
bzero
はメモリをゼロにするだけなので、より効率的です。
memset
を行う可能性があります。 それでも、必ずしも
memset
を使用することで、メモリをゼロにすることができます。
bzero
は非推奨とされており、さらにCの標準的な関数ではありません。マニュアルによると
memset
よりも優先されます。
bzero
という理由からです。 では、なぜまだ
bzero
オーバー
memset
? 単に効率が良いだけなのか、それともそれ以上のものがあるのか? 同様に
memset
オーバー
bzero
というのは、新しいプログラムでは事実上好ましい選択肢になっているのでしょうか?
解決方法は?
を優先する理由が見当たらない。
bzero
オーバー
memset
.
memset
は標準的なCの関数であるのに対し
bzero
はCの標準関数になったことはない。その理由はおそらく、同じ機能を
memset
関数を使用します。
さて、効率についてですが、コンパイラは
gcc
のビルトイン実装を使用します。
memset
を指定すると、特定の実装に切り替わります。
0
が検出されます。同じく
glibc
ビルトインが無効の場合。
関連
-
警告: 'struct XXX' はパラメータリストの内部で宣言されています。
-
[解決済み] C言語で関数型プログラミングを行うためのツールにはどのようなものがありますか?
-
[解決済み] 配列の場合、なぜ a[5] == 5[a] になるのでしょうか?
-
[解決済み] Cプリプロセッサはなぜ "linux "という単語を定数 "1 "と解釈するのですか?
-
[解決済み] マクロで無意味なdo-while文やif-else文を使っているのはなぜですか?
-
[解決済み] 演算子 *, /, +, -, % を使わずに 3 で割る。
-
[解決済み] while ( !feof (file) ) 」は、なぜいつも間違っているのですか?
-
[解決済み] C言語標準に準拠した構造体の初期化方法
-
[解決済み】高放射能環境下で使用するアプリケーションのコンパイルについて
-
[解決済み】malloc+memsetはcallocより遅いのはなぜ?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
error: '.' トークンの前にunqualified-idを指定する必要があります。
-
赤線の位置は必ずしも間違っていない:式は変更可能なlvalueでなければならないエラーは、この文とは別の場所に存在する可能性があります。
-
ポインタ定数および定数ポインタ
-
C 言語のポインタ配列のポインタ型、ポインタに値を割り当てるために配列名を使用、コンパイル時の警告:互換性のないポインタ型からの初期化
-
C - 添え字の値が配列でもポインタでもベクトルでもないエラー
-
[解決済み] C言語で関数型プログラミングを行うためのツールにはどのようなものがありますか?
-
[解決済み] C - Setデータ構造を実装するには?
-
[解決済み] C言語で配列のサイズを決定するにはどうすればよいですか?
-
[解決済み] longをフォーマットするprintfの引数は何ですか?
-
[解決済み] C言語でオブジェクト指向のコードを書くとしたら、どのようにすればよいのでしょうか?[クローズド]