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