线程创建多了,没有释放。导致内存泄露。。。

int main()
{
int len;
int on=1;
// pMachList = CreateEmptyLinklist(); DataBaseInit(); ReadAdjust();
int *temp;
socketSrv=socket(AF_INET,SOCK_STREAM,0); addrSrv.sin_family=AF_INET;
addrSrv.sin_port=htons(8000);
addrSrv.sin_addr.s_addr=htonl(INADDR_ANY);
memset(addrSrv.sin_zero,0,8); if((setsockopt(socketSrv,SOL_SOCKET,SO_REUSEADDR,&on,sizeof(on)))<0)
{
perror("setsockopt failed");
exit(EXIT_FAILURE);
}
if(bind(socketSrv,(struct sockaddr*)&addrSrv,sizeof(addrSrv))<0)
perror("bind");
listen(socketSrv,100);
len=sizeof(addrClt);
while(1)
{
pthread_t pid;
temp=(int *)malloc(sizeof(int));
*temp= accept(socketSrv,(struct sockaddr*)&addrClt,(socklen_t*)(&len));
printf("accept socket= %d\n",*temp); if(-1==*temp){
printf("accept error \n");
continue;
}
int err;
err=pthread_create(&pid,NULL,(void *)f1,temp);//一个线程处理一个客户端
if (err != 0)
printf("can't create thread: %s\n", strerror(err));
}
close(socketSrv);
return 0;
}

在线程中加入: pthread_detach(pthread_self());

线程结束的时候自动销毁。。。

void f1(int *socketCtl2)//利用pthread_create把参数传进来
{
unsigned char buf[1024];
int len,i;
memset(buf,0,1024);
struct FileRecord temFile;
unsigned short CalCRC;
pthread_detach(pthread_self());
while(1)
{
len=recv(*socketCtl2,buf,1024,0);
// printf("recv len : %d\n",len);
if(len<=0)
{
printf("recv error len=%d\n",len);
deleteMachNode(*socketCtl2);
close(*socketCtl2);
free(socketCtl2);
pthread_exit(NULL);
}
}
}

最新文章

  1. 把域名绑定到某个项目,以nginx服务器为例
  2. wordpress(三)wordpress手动更新
  3. 准备使用 Office 365 中国版--域名
  4. Nginx限制某个IP同一时间段的访问次数
  5. 部署 mozilla-BrowserQuest
  6. 《C陷阱与缺陷》读书笔记
  7. iOS-OC-基础-NSNumber常用方法
  8. ebtables使用的协议
  9. 安装Hadoop及Spark(Ubuntu 16.04)
  10. 转: web 页面加载速度优化实战-100% 的飞跃提升
  11. java从网络中下载图片到本地
  12. css之overflow应用
  13. django中的一对一、一对多、多对多及ForeignKey()
  14. 最简单的Spring Security配置示例
  15. 【Android】android:manageSpaceActivity让应用手动管理应用的数据目录
  16. 设计模式,Let&#39;s “Go”! (上)
  17. Angular echarts图表自适应屏幕指令
  18. C语言:自定义一个查找字串的功能函数,类似于&lt;string.h&gt;中的strstr()
  19. java多线程(一)-五种线程创建方式
  20. Java常用类归纳(Object、System、Properties、包装类和工具类等等)

热门文章

  1. 将从数组中取到的字符串赋值给了UIImage导致的错误
  2. 持续集成-sourcetree的安装、使用记录
  3. DOM扩展之Selectors API
  4. Graphic geometry
  5. 【转载】【Windows批处理IV】批量进行文件重命名
  6. 域环境下装SQL SERVER的一次惨痛经历
  7. 浅谈SEO-提交(一)
  8. Linux------小网盘(1)
  9. 第三个Sprint冲刺第三天
  10. Why one-norm is an agreeable alternative for zero-norm?