Aucune raison de préférer memset/ZeroMemory à la valeur d'initialisation pour WinAPI les structures?

Dans la programmation Win32 une poignée de GOUSSES structs est utilisé. Ces structures ont souvent besoin d'être remis à zéro avant l'utilisation.

Cela peut être fait en appelant memset()/ZeroMemory()

STRUCT theStruct;
ZeroMemory( &theStruct, sizeof( theStruct ) );

ou par la valeur d'initialisation:

STRUCT theStruct = {};

Bien que les deux variantes ci-dessus ne sont pas équivalentes en général:

  • traiter rembourrage différemment
  • traiter les non-POD variables de membre différemment

en cas de POD les structures utilisées dans Win32 ils regardent équivalent.

Sont là tout cas, quand memset()/ZeroMemory() devrait être utilisé au lieu de la valeur d'initialisation avec Win32 POD structs?

Double de stackoverflow.com/q/1998752/471164
Ce n'est pas complète dupe - ce qui est demandé pour un cas particulier lors de la première approche doit être préféré.
Connexes: stackoverflow.com/questions/3038302/...
Un excellent Post sur ZeroMemory par Raymond Chen - Non, ce n'est pas la réponse à la question mais c'est une bonne lecture.

OriginalL'auteur sharptooth | 2010-10-04