Parameter push order of a c++ function call does not reflect the parameter's address in stack
<p>I did an experiment:</p>

<pre><code>class A {
public:
  A() {}
  A(const A&amp; a) {
    printf("A - %p\n", this);
  }
};

class B {
public:
  B() {}
  B(const B&amp; b) {
    printf("B - %p\n", this);
  }
};

void func(A a, B b) {}

int main() {
  A a;
  B b;
  func(a, b);
  return 0;
}
</code></pre>

<p>The output is:</p>

<pre><code>B - 0x7fff636e2c48
A - 0x7fff636e2c50
</code></pre>

<p>Since the parameters are pushed from right to left, why B's address is lower than A's? Confused. (Stack starts from the higher address).</p>
