With compile-time sized arrays, you may gain a little bit of performance over run-time sized ones, because the compiler can use tricks to quickly calculate a fixed multiplication. If the compiler doesn't know the size when it compiles, it obviously can't use such tricks, and must resort to proper multiplication. This is particularly "bad" if the size is a power-of-two (2, 4, 8, 16, 32 ...).
Whether this is at all noticable depends very much on how much data is being used, and how much of the time is spent walking the array data. In most cases, it's very likely that there will be no noticable difference.
As to usage of memory - if you don't actually "touch" the memory, it's most likely not going to actually take up any physical space in your machine.
Say you add a global variable like this to a small application:
Code:
int a[10000000]; // 40MB roughly.
Then run the application and see how much memory it uses. I think you'll find that it uses roughly the same as without such an array. Add a loop to fill the array, and memory usage goes up to around 40MB.
--
Mats