Wie schlimm es ist, zu halten, ruft malloc() und free()?

Ich bin das senden einer text-Datei - client-server
Trennung der text in Pakete, die jeweils 512 bytes
aber einige Pakete, die text enthalten weniger als max Größe, damit auf der Server-Seite beim Empfang jedes Paket, ich bin Aufruf malloc() zu bauen, die einen string wieder , ist das eine schlechte Praxis ?
ist es besser, einen Arbeitspuffer, die passen für maximale Länge und halten Durchlaufen , kopieren und überschreiben Sie deren Werte ?

okay @n.m. hier ist der code , dies, wenn innerhalb einer for (;;) - Schleife, geweckt von der 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;
 }
  • Eine Zeile code ist mehr Wert als tausend Kommentare.
  • Ich fügte den code hinzu die main-post
InformationsquelleAutor cap10ibrahim | 2011-09-30
Schreibe einen Kommentar