首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

频繁调用malloc函数会导致内存异常吗

2013-08-10 
频繁调用malloc函数会导致内存错误吗?我写的服务器里面用了一个结构体来记录连接上来的客户端信息,使用sel

频繁调用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);

mySock 是一个结构体保存了一个整形和一个指针。。。求指导
malloc 服务器 测试 内存
[解决办法]
段错误通常是指针操作的问题,好好检查下哪里的指针有内存泄露/野指针的可能性吧
[解决办法]
崩溃的时候在弹出的对话框按相应按钮进入调试,按Alt+7键查看Call Stack里面从上到下列出的对应从里层到外层的函数调用历史。双击某一行可将光标定位到此次调用的源代码或汇编指令处。



判断是否越界访问,可以在数组的最后一个元素之后对应的地址处设置数据读写断点。如果该地址对应其它变量干扰判断,可将数组多声明一个元素,并设置数据读写断点在该多出元素对应的地址上。

自己的内存池的
[解决办法]
看看是不是运行环境c库版本和开发环境不一致
[解决办法]
如果是服务器端  还是定义自己的内存池
------解决方案--------------------


Holy Shi....
楼主, 不能这样啊,你这代码加了密码做了混淆拿来给大家看, 消遣大家啊。。。
一个函数不要超过一屏好不好。。。。
if else 嵌套不要太深好不好。。。。
本地变量不要太多好不好啊。。。。
SRP 一下好不好啊。。。。

热点排行