频繁调用malloc函数会导致内存错误吗?
我写的服务器里面用了一个结构体来记录连接上来的客户端信息,使用select来进行应答监控,每次有新的连接就malloc一个空间出来放到链表里,然后我测试的时候开了100个客户端来连接服务器,每个客户端都不断的循环连接断开20次,于是当达到800多个连接的时候就发生Segmentation fault (core dumped)错误,服务器直接挂了。。。连续几次重开都能达到800多个连接,再然后竟然一个连接都连不了了,卡在malloc这个函数里,只是什么回事啊?我每次都有释放申请的空间啊。
sprintf(errorMessage, "got connection from %s!the %d connector, %s", inet_ntoa(raddr.sin_addr),countcon, GetCurrentTime(0, 0));
vMsgLog(errorMessage);
lmysock soc=(lmysock)malloc(sizeof(mySock));
MsgLog("new malloc:%d\n",soc->sock);
soc->sock=newsock;
soc->lsock=head;
head=soc;
MsgLog("new Mysock:%d\n",soc->sock);
判断是否越界访问,可以在数组的最后一个元素之后对应的地址处设置数据读写断点。如果该地址对应其它变量干扰判断,可将数组多声明一个元素,并设置数据读写断点在该多出元素对应的地址上。