免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1844 | 回复: 2

[C] 发现libevent有个bug [复制链接]

论坛徽章:
0
发表于 2013-07-05 18:58 |显示全部楼层
本帖最后由 liexusong 于 2013-07-05 18:59 编辑

其实不算是bug, 只是觉得有点浪费内存而已, 代码如下:
  1. int
  2. event_base_priority_init(struct event_base *base, int npriorities)
  3. {
  4.         int i;

  5.         if (base->event_count_active)
  6.                 return (-1);

  7.         if (base->nactivequeues && npriorities != base->nactivequeues) {
  8.                 for (i = 0; i < base->nactivequeues; ++i) {
  9.                         free(base->activequeues[i]);
  10.                 }
  11.                 free(base->activequeues);
  12.         }

  13.         /* Allocate our priority queues */
  14.         base->nactivequeues = npriorities;
  15.         base->activequeues = (struct event_list **)calloc(base->nactivequeues,
  16.             npriorities * sizeof(struct event_list *));
  17.         if (base->activequeues == NULL)
  18.                 event_err(1, "%s: calloc", __func__);

  19.         for (i = 0; i < base->nactivequeues; ++i) {
  20.                 base->activequeues[i] = malloc(sizeof(struct event_list));
  21.                 if (base->activequeues[i] == NULL)
  22.                         event_err(1, "%s: malloc", __func__);
  23.                 TAILQ_INIT(base->activequeues[i]);
  24.         }

  25.         return (0);
  26. }
复制代码
在第18行:
base->activequeues = (struct event_list **)calloc(base->nactivequeues,
            npriorities * sizeof(struct event_list *));

我觉得应该改为:
base->activequeues = (struct event_list **)calloc(base->nactivequeues,
            sizeof(struct event_list *));

论坛徽章:
0
发表于 2013-07-05 19:07 |显示全部楼层
标题党

论坛徽章:
307
射手座
日期:2013-08-23 12:04:38射手座
日期:2013-08-23 16:18:12未羊
日期:2013-08-30 14:33:15水瓶座
日期:2013-09-02 16:44:31摩羯座
日期:2013-09-25 09:33:52双子座
日期:2013-09-26 12:21:10金牛座
日期:2013-10-14 09:08:49申猴
日期:2013-10-16 13:09:43子鼠
日期:2013-10-17 23:23:19射手座
日期:2013-10-18 13:00:27金牛座
日期:2013-10-18 15:47:57午马
日期:2013-10-18 21:43:38
发表于 2013-07-05 22:45 |显示全部楼层
那23、24行的循环对 base->activequeues[i] 赋值不是越界了么?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

SACC2022中国系统架构师大会

2022年1月13日~15日,由IT168旗下ITPUB企业社区平台主办的第十四届中国系统架构师大会(SACC2022)将在云端进行网络直播。承续上届“数字转型 架构重塑”核心主题,按照技术主线分为架构线(传统架构-分布式架构-微服务架构-低代码架构)、运维篇(DevOps、AIOps、高效运维、数据安全等)、金融行业篇、前沿技术篇、大数据篇等,云集国内CTO、研发总监、高级系统架构师、开发工程师和IT经理等技术人群,力争为各路豪杰奉献一场技术的饕餮盛宴。

大会官网
  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP