If I were to declare a variable inside of a loop, is it faster to have the declaration outside of the loop? Does the program reallocate the memory for n
at each
Variables are not really "created" or "destroyed". They are concepts at the abstraction level of the programming language. The compiler is not required to have a one to one mapping between a variable and memory addresses. In practice, most of the time, stack space for local variables is allocated at once at the beginning of the function, so it won't make a difference in performance.
Note that, C++, unlike C, which doesn't have a notion for constructors, supports object construction and destruction, so if you were to define a variable of a class type in a for loop, like the following,
class MyClass {
public: MyClass() { cout << "hello world" << endl; }
};
//...
for (int i = 0; i < 10; ++i) {
MyClass m;
}
you'd call its constructor every time, effectively printing "hello world" ten times. This is very different from C declarations and should not be confused with it.
Any modern compiler would optimise these to the same machine code, so you should see no difference.
For most modern compilers, this doesn't matter. They will assign processor registers or place the variables on the stack as efficiently as possible.