本文共 417 字,大约阅读时间需要 1 分钟。
环境: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来实现。
转载地址:http://wuesi.baihongyu.com/