您的位置:首页 > 其它

inet_ntoa导致内存泄露

2012-12-01 10:49 239 查看
环境:

cpu: ARM7

OS:vxworks

语言:C语言

vxworks中inet_ntoa的实现代码如下

char *inet_ntoa ( struct in_addr inetAddress   /* inet address */  )
{

FAST char *buf = (char *) malloc (INET_ADDR_LEN);
if (buf != NULL)
inet_ntoa_b (inetAddress, buf);
return (buf);
}
malloc之后的内存是没有释放的。如果频繁的调用该函数就会使系统内存耗尽。
测试方法: 手动起一个任务,在任务主循环中调用inet_ntoa,过一段时间就memShow一下。能明显的看到剩余内存在减少。

改动方法:使用局部变量,传参给inet_ntoa_b来实现。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: