This is an unofficial snapshot of the ISO/IEC JTC1 SC22 WG21 Core Issues List revision 110b. See http://www.open-std.org/jtc1/sc22/wg21/ for the official list.

2023-01-15


737. Uninitialized trailing characters in string initialization

Section: 9.4.3  [dcl.init.string]     Status: CD2     Submitter: James Kanze     Date: 26 October, 2008

[Voted into WP at October, 2009 meeting.]

The current specification of string initialization in 9.4.3 [dcl.init.string] leaves uninitialized all characters following the terminating '\0' of a character array with automatic storage duration. This is different from C99, in which string initialization is handled like aggregate initialization and all trailing characters are zeroed (6.7.8 paragraph 21).

(See also issue 694, in which we are considering following C99 in a somewhat similar case of zero-initializing trailing data.)

Proposed resolution (September, 2009):

Add a new paragraph following 9.4.3 [dcl.init.string] paragraph 2:

There shall not be more initializers than there are array elements. [Example:

  char cv[4] = "asdf";    // error

is ill-formed since there is no space for the implied trailing '\0'. —end example]

If there are fewer initializers than there are array elements, then each element not explicitly initialized shall be zero-initialized (9.4 [dcl.init]).