2016-08-04 4 views
0

クライアントサーバシステムでは、そのサーバがIEの一部のみを投入し、残りはクライアント側でデフォルト値(0)として扱われる可能性があります。memset()を使用してすべて0で動的に割り当てられた構造体を初期化することをお勧めします。

このようなシステムでは、メッセージの内容をコピーする前に受信メッセージに動的にメモリを割り当てることをお勧めしますか?

+1

「* IE *」とは何ですか? – alk

+0

これには一般的な答えはありません。初期化されたメモリがゼロである必要がある場合は 'calloc()'を使います。そうでなければ、ゼロ化が必要かどうかは、あなたが何をするかによって決まります。たとえば、 'snprintf()'を使って割り当てられたメモリにC文字列を書いているのであれば、その文字列を書き込む前にゼロを初期化する必要はありません。 –

+0

メモリに何か他のものをコピーして上書きしようとすると、メモリをクリアするのに使用しません。 –

答えて

1

初期化後すぐに上書きされるメモリを初期化する必要はありません。

また、未使用のメモリを初期化する必要もありません。 (ここで「未使用」とは、決して読み取られないことを意味します)。

他のすべてのメモリは初期化する必要があります。 memset()を使用してこれを実行するかどうかと、具体的なコンテキストとユースケースによって、0を書き込むかどうかが決まります。

関連する問題