|
segmentation fault 意即你访问了不属于你的内存。可能是由于错误的指针操作、数组越界或函数参数使用不当引起的。有时候程序所需的内存太大(比如说数组太大),系统无法分配足够的内存,而程序中没有对这种情况进行判断,仍旧按照正常情况访问非法地址或非法指针。
有部分代码:
[code:1] nsel=select(maxfd+1,&rds,&wds,NULL,NULL);
...
for(i=0;i<CONN_FD_MAX&&nsel>0;i++){
if(FD_ISSET(cq.ci[i].sd,&rds)){
printf("reading\n");
read_requ(&cq,i);
nsel--;
}
if(FD_ISSET(cq.ci[i].fd,&wds)){
printf("writing\n");
write_resp(&cq,i);
nsel--;
close(i);
}
}[/code:1]如果只是FD_SET(cq.ci[1].sd,&rds),当执行上面的语句
if(FD_ISSET(cq.ci.fd,&wds))(这个if语句为假)时发生segmentation fault错误,怎么避免这个错误,望高手指点 |
|