私はこの前学期に受けたシステムプログラミングクラスで、基本的なクライアント/サーバーをCで実装する必要がありました。などの構造体sock_addr_in
や文字バッファー(クライアントとサーバー間でデータを送受信するために使用)を初期化するときにそれらを使用するだけで初期化しbzero
ないように指示しmemset
ました。彼はなぜその理由を説明したことがなく、これに正当な理由があるかどうか私は知りたいですか?
私はここを参照してください:http : //fdiv.net/2009/01/14/memset-vs-bzero-ultimate-showdownこれbzero
はメモリをゼロにするだけなので、より効率的であるため、実行されるmemset
可能性がある追加のチェックを実行する必要があります。それでも、memset
メモリのゼロ化に絶対に使用しない理由とは限りません。
bzero
は非推奨と見なされ、さらに標準のC関数ではありません。マニュアルによると、この理由のためにmemset
推奨されbzero
ます。では、なぜそれbzero
以上に使いたいのでしょうmemset
か?効率を上げるためだけですか、それともそれ以上ですか?同様に、それが新しいプログラムにとって事実上好ましいオプションになっmemset
てbzero
いることの利点は何ですか?
memset
「もう少しチェックが進んでいる」ために効率が少し低下する可能性があるという考えは、明らかに時期尚早の最適化のケースです。CPU命令を省略して得られるメリットが何であれ、移植性を損なう可能性がある場合は、その価値はありません。コード。bzero
時代遅れであり、それはそれを使用しない十分な理由です。