Initializing a dynamically-sized Variable-Length Array (VLA) to 0

arrays, c, gcc, initialization, variable-length

Solution

Yes, you must write code for the initialisation of VLAs (which could be a `memset()` like you have described, or any other way that you care to).

It is simply a constraint in the C standard (§6.7.8):

- The type of the entity to be initialized shall be an array of unknown size or an object type that is not a variable length array type.

Problem

The following line of code, which creates a variable-length array on the stack: ``` char name[length] = {'\0'}; ``` Generates the following compiler diagnostics: ``` error: variable-sized object may not be initialized warning: excess elements in array initializer warning: (near initialization for ‘name’) ``` What options are available to me for initializing VLAs? Am I forced to use a line such as: ``` memset(name, 0, sizeof(name)); ``` Instead?

Original source

Related problems