title: Any reason to prefer memset/ZeroMemory to value initialization for WinAPI structs?
body: <p>In Win32 programming a handful of POD structs is used. Those structs often need to be zeroed out before usage.</p>
  
  <p>This can be done by calling <code>memset()</code>/<code>ZeroMemory()</code></p>
  
  <pre><code>STRUCT theStruct;
  ZeroMemory( &amp;theStruct, sizeof( theStruct ) );
  </code></pre>
  
  <p>or by value initialization:</p>
  
  <pre><code>STRUCT theStruct = {};
  </code></pre>
  
  <p>Although <a href="https://stackoverflow.com/questions/1998752/which-one-to-use-memset-or-value-initialization-to-zero-out-a-struct">the two variants above are not equivalent in general</a>:</p>
  
  <ul>
  <li>treat padding differently</li>
  <li>treat non-POD member variables differently</li>
  </ul>
  
  <p>in case of POD structs used in Win32 they look equivalent.</p>
  
  <p>Are there any cases when <code>memset()</code>/<code>ZeroMemory()</code> should be used instead of value initialization with Win32 POD structs?</p>