超范围初始化,
int a[2] = { 1, 2, 3 };
编译时会告警,但能通过。超范围读取时(比如a[99]),得到的可能是0也可能是某不大的整数(例如个位数),由此造成的bug不易发觉。
初始化不足时,例如:
int a[5] = { 1, 2, 3};
则通常的结果是填充为0. GCC上可观察到如此行为。
2024-02-09 22:18:16
超范围初始化,
int a[2] = { 1, 2, 3 };
编译时会告警,但能通过。超范围读取时(比如a[99]),得到的可能是0也可能是某不大的整数(例如个位数),由此造成的bug不易发觉。
初始化不足时,例如:
int a[5] = { 1, 2, 3};
则通常的结果是填充为0. GCC上可观察到如此行为。