项目遇到读空指针的问题,总结出来linux下读空指针的行为是未定义的,。以下是测试的代码
void f(char *p[])
{
p[1]="dd";
p[6]="cc";
}
int main()
{
char *(p[10])={"aa","aa","aa","aa","aa"};
f(p);
cout<<sizeof(p)<<endl;
for(int i=0;i<10;i++){
if(p[i]==NULL)
cout<<"p["<<i<<"]is NULL"<<endl;
cout<<p[i]<<endl;
/*在引用空指针时行为可能是是未定义的,
linux的g++下读空指针的后果就是后面的输出不再正常,
需要clear输出缓冲区*/
cout.clear();/*清空缓冲区,从而可以输出p[6]*/
}
return 0;
}