1. 程式人生 > >inet_ntoa導致記憶體洩露

inet_ntoa導致記憶體洩露

環境:

     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來實現。