I read that in function the local variables are put on stack as they are defined after the parameters has been put there first.

This is mentioned also [here](http://www.learncpp.com/cpp-tutorial/79-the-stack-and-the-heap/)

> 
> 5 .All function arguments are placed on the stack. 6.The instructions
>  inside of the function begin executing. 7.Local variables are pushed
>  onto the stack as they are defined.
> 
> 
> 

So I excpect that if the C++ code is like this:

```
#include "stdafx.h"
#include <iostream>

int main()
{

    int a = 555;
    int b = 666;
    int *p = &a;

    std::cout << *(p+1);
    return 0;
}

```

and if integer here has 4 bytes and we call the memory space on stack that contains first 8 bits of `int` `555` **x**, then 'moving' another 4 bytes to the top of the stack via `*(p+1)` we should be looking into memory at address **x + 4**.

However, the output of this is `-858993460` - an that is always like that no matter what value `int b` has. Evidently its some standard value. Of course I am accessing a memory which I should not as for this is the variable b. It was just an experiment.

How come I neither get the expected value nor an illegal access error?

Where is my assumption wrong?  

What could `-858993460` represent?