Насколько плохо продолжать вызывать malloc () и free ()?

Я отправляю текстовый файл - клиент-сервер разбивает текст на пакеты по 512 байт , но некоторые пакеты содержат текст меньше максимального размера, поэтому на стороне сервера при получении каждого пакета я вызываю malloc () для повторного построения строки. Это плохая практика? лучше сохранить рабочий буфер, который может соответствовать максимальной длине и продолжать повторять, копировать и перезаписывать свои значения?

окей @nm вот код, это if внутри цикла for (;;), разбуженного select ()

if(nbytes==2) {
            packet_size=unpack_short(short_buf);
            printf("packet size is %d\n",packet_size);
            receive_packet(i,packet_size,&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>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;
 }
19
задан cap10ibrahim 30 September 2011 в 18:27
поделиться