Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Automatic variables in C++ [duplicate]

Possible Duplicate:
In C++, why should new be used as little as possible?

Where are automatic variables allocated in C++? On the stack or the heap?

Also, I read in 7.9 — The stack and the heap that all memory allocated on the stack is known at compile time. Is it true? Does it mean that only static memory allocation happens on the stack?

Also, please mention links, references to a a complete explanatory text about memory allocation in C++.

like image 899
Nitin Garg Avatar asked Jul 06 '11 20:07

Nitin Garg


Video Answer


1 Answers

C++ does not have the concept of a stack or heap, it is an implementation detail as far as the language is concerned.

That being said, every implementation I know of uses the stack to manage the lifetime of local variables. However, many local variables may end up living entirely within registers and never touch the stack, and some local variables may be optimised out completely. Just because you declare an automatic variable doesn't mean that it will be put on the stack.

e.g.

int main()
{
    int x = rand();
    int y = 2;
    cout << x << y << endl;
    return 0;
}

In this code, with optimisations on, the variable y will almost certainly be removed completely and variable x will probably be given its own register. It's unlikely that either of those variables will ever exist on the stack.

like image 57
Peter Alexander Avatar answered Sep 22 '22 14:09

Peter Alexander