 <ul> <li>If it crashes because of byte alignment it is your fault.</li> <li>boost uses <code>#pragma pack</code> for correctness</li> <li>Compiling with a different byte alignment produce a complete different assemby code, so you have to compile all libraries with the same alignment.</li> <li>If you have your boost project in visual the alignment is under <code>Properties-&gt; C/C+1-&gt; Code Generation -&gt; Struct Member Alignment</code>. If you use another tool find how options are provided to the compiler and pass <code>/Zp1</code>(or <code>-Zp1</code>).</li> </ul> <p>There will be multiple functions used by boost which would require a specific byte alignment. These function may be from the boost framework itself or from microsoft libraries. The classic case will be atomic operations (ie like <a href="https://msdn.microsoft.com/en-us/library/windows/desktop/ms683614(v=vs.85).aspx" rel="nofollow">InterlockedIncrement</a> ) which requires a minimum byte alignment. </p> <p>If there is a structure</p> <pre><code>struct { char c; int a; volatile int b; } </code></pre> <p>and <code>b</code> is used as atomic operand, The structure members alignment have to be guaranteed using <code>#pragma pack</code>. So boost use explicit <code>#pragma pack</code> for <strong>correctness</strong>.</p>