Does the C standard require the size of an array of n elements to be n times the size of an element?
Does the C standard require that the size of an array of n elements be n times the size of an element, either by explicit statement or by rigorous logical deduction from its requirements? For example, could int (*x)[5] = malloc(5 * sizeof **x); fail to request sufficient space for an array of five int ? C 2011 [N1570] 6.5.3.4 7 shows an example of computing the number of elements in an array as sizeof array / sizeof array[0] . However, examples are not a normative part of the standard (per paragraph 8 of the forward). 6.2.5 20 says an array type describes a contiguously allocated nonempty set