Alex Rivera | Logout

Array of size defined by not constant variable

Asked 2011-11-14T17:49:20.533
10

There is such code:

#include <iostream>

int main()
{
  int size;
  std::cin >> size;

  size = size + 1;
  int tab3[size];

  tab3[0] = 5;
  std::cout << tab3[0] << " " << sizeof(tab3) << std::endl;
  return 0;
}

The result is:

$ g++ prog.cpp -o prog -Wall -W 
$ ./prog
5
5 24

Why does this code even compile? Shouldn't be length of array a constant variable?

I used g++ version 4.4.5.

Edit
Report

1 Answer

2

GCC provide's VLA's or variable length arrays. A better practice is to create a pointer and use the new keyword to allocate space. VLA's are not available in MSVC, so the second option is better for cross platform code

answered 2011-11-14T17:52:37.283

Your Answer