title: How bad it is to keep calling malloc() and free()?
body: <p>I'm sending a text file - client-server 
  breakup the text into packets each of 512 bytes 
  but some packets contain text less than max size so on the servers side when receiving each packet I'm calling malloc() to build a string again , is this a bad practice ?
  is it better to keep a working buffer that can fit for max length and keep iterating , copying and overwriting its values ?</p>
  
  <p>okay @n.m. here is the code , this if is inside a for(;;) loop wakened by the select()</p>
  
  <pre><code>if(nbytes==2) {
              packet_size=unpack_short(short_buf);
              printf("packet size is %d\n",packet_size);
              receive_packet(i,packet_size,&amp;buffer);
              printf("packet=%s\n",buffer);
              free(buffer);
  }
  //and here is receive_packet() function 
  int receive_packet(int fd,int p_len,char **string) {
   *string = (char *)malloc(p_len-2); // 2 bytes for saving the length    
   char *i=*string;   
   int temp;
   int total=0;
   int remaining=p_len-2;
   while(remaining&gt;0) {
       //printf("remaining=%d\n",remaining);
       temp = recv(fd,*string,remaining,0);
       total+=temp;
       remaining=(p_len-2)-total;
       (*string) += temp;
   }
   *string=i;
   return 0;
   }
  </code></pre>