环境:
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来实现。