关于kamailio-4.0.3版本,内存分配

来源:互联网 发布:java全文检索 编辑:程序博客网 时间:2024/05/02 03:01

环境: kamailio.4.0.3+centos+mysql


情况描述:
    (1)对于modules/xcap_server 进行功能的扩充,  当客户端发送HTTP PUT请求,根据打印出的内存分配LOG, 其中申请和释放的内存都能完全匹配[能看成内存未泄露吗?]

    但是使用free命令查看系统会发现少了接近3M的内存泄露。

    (2)  若将使用的kamailio提供的pkg_*的函数的 变为C语言提供的内存函数(malloc等),则不会出现内存泄露。

    (3)  当多次处理PUT请求之后, q_malloc(mem): line 156  

LOG(L_CRIT, "BUG: qm_*: prev. fragm. tail overwritten(%lx, %lx)[%p:%p]!""\n",
PREV_FRAG_END(f)->check1, PREV_FRAG_END(f)->check2, f,
(char*)f+sizeof(struct qm_frag));

        会打印出来。  可不明白这样的错误是怎么造成的,如何避免。


注: 每次内存泄露的比较多,但代码中分配的内存每次都控制在1000字节之内。


我个人觉得应该是自己代码的出的问题,可根据(1)(2)感觉自己的代码也没问题的。

也许自己对于pkg_*的代码不太理解,希望大神能科普一下。