Pardon me for asking so many questions but i am really having lots of questions as i learn more about the language.

If i make a declaration like
[insert]
Code:
struct stack
{
    int a[MAX]; // MAX is defined to be of some size
    int  top;
};
I was thinking what happens if i have after this declaration the statement

struct stack s;

Does the compiler allocate space for it in the memory. Coming from a little java background how does this work out in c ? Like when is the actual allocation done it it at compilation time or at run time?