This question already has an answer here:
For some reason, in the past, I recall not being able to do something like:
int arraySize;
cin >> arraySize;
int array[arraySize];
But recently, I tried this again and its not causing any issues. I could've sworn before this was something that threw an error in my compiler (macOS Sierra, Xcode 8.1). Was anything in the language updated to allow this? - I could be entirely remembering incorrectly and this wasn't an issue before, but I'm not sure. I thought array sizes had to be defined during compilation and the user couldn't pick that (which is where you would implement a dynamic array).
The C++ Standard does not support variable length arrays though some compilers can have their own language extensions that allow to use VLAs in a C++ program.
Thus this code snippet
is not C++ compliant.
Use instead the standard C++ class
std::vector
.As for C then according to the C Standard implementations may conditionally support VLAs.
You can check whether an implementation supports VLAs. From the C Standard (6.10.8.3 Conditional feature macros)
__STDC_NO_VLA__
No. Variable length arrays (aka. VLAs) are a compiler specific extension.
The c++ standard never allowed this (unlike the c99 standard does so contrarily).