问题:
最近我们利用Polaris扫描代码,扫出了大量栈数组没有初始化的问题,大型项目中没有初始化的数组可能含有垃圾数据引起不可预知的错误。Review代码过程中,发现大家真是“八仙过海各显神通”,各种办法。同时我也对有些代码有些疑问,比如char s[64]=“abc”, 会不会把s[4]后的数据都赋值为0哪?
百里之堤溃于蚁穴,不高级,但很重要。本节就窥探一下这些小细节。
试验代码:
尽量考虑到各种各样的初始化语句,如下。
#include<stdio.h>
int main(){
int iarr0[64]=<