VLA is an acronym of variable-length array, which is an array (actual array, not just block of memory which can act like one) that have size (at least one dimension) determined during runtime (instead of at compile time).

Languages supporting VLAs in one form or another include: Ada, Algol 68, APL, C, C#, COBOL, Fortran, J and Object Pascal. As you may notice, beside C and C#, those aren’t languages one would call mainstream nowadays.

VLAs were introduced with the revision C99 of the C standard. At first glance they seem convenient and efficient, but it’s just an illusion. In reality they are just sources of constant issues. Truly a stain on otherwise really good revision.

As you could have guessed by the quote at the beginning, project which used to rely on VLA quite extensively is nothing else than Linux kernel. Maintainers spent a lot of effort to get rid of all VLA and as of version 4.20 (year 2018) it’s completely VLA-free.