While there is no "sub-stack", scoping can have an effect on the stack. After a variable goes out of scope, the compiler is allowed to use that variable's stack space for variables that are declared later on.
My output from this program is 10 even though I never initialize x. The compiler is using y's stack space for x because y will never be in scope again.
using namespace std;
int y = 10;
cout << x << endl;
Note that you shouldn't depend on this behavior. It may vary depending on which compiler you use and the level of optimization.