title: Why variables' address on stack are not sequential
body: <p>(I do this test on Windows Visual Studio 2019 Version16.7)</p>
  <pre><code>    const char a = 'a';
      const char b = 'b';
      const char c = 'a';
  
      intptr_t ptr_a = (intptr_t)&amp;a;
      intptr_t ptr_b = (intptr_t)&amp;b;
      intptr_t ptr_c = (intptr_t)&amp;c;
  
      std::cout &lt;&lt; ptr_b - ptr_a &lt;&lt; &quot;  &quot; &lt;&lt; ptr_c - ptr_b &lt;&lt; std::endl;
  </code></pre>
  <p>if I run this piece of code under Debug, the result is:
  &quot;32 32&quot;</p>
  <p>if I run this piece of code under release, the reuslt is:
  &quot;-1 2&quot;</p>
  <p>So, the question is:
  sizeof(char) is 1, but why we get &quot;32 32&quot;, the address on stack should be continuous，right?
  And, under release mode, why ptr_b is less than ptr_a?</p>