title: why does stack grows downward?
body: <blockquote>
    <p><strong>Possible Duplicate:</strong><br>
    <a href="https://stackoverflow.com/questions/2035568/why-do-stacks-typically-grow-downwards">Why do stacks typically grow downwards?</a>  </p>
  </blockquote>
  
  
  
  <p>In most system(linux, windows, etc)
  stack starts at high memory address and grows lower.</p>
  
  <p>but, most buffers grows from lower address to higher address.
  is there a reason for this?</p>
  
  <p>because I think this is the fundamental problem of
  buffer overflow attack.</p>
  
  <p>I've seen that in earlier days, due to some reason, system designers
  made stack to grow downwards...</p>
  
  <p>but I see even nowadays, this architecture(different direction of growth of stack and buffer) 
  doesn't seem to be changed.</p>
  
  <p>I know there is NX protection, ASLR, stack guard(canary), etc stuffs to
  protect buffer overflow attack.  but I don't understand why they dont
  make growth direction of buffer and stack same... </p>
  
  <p>am I missing something?</p>