私はいつも、ループ内で変数を定義するべきではないという印象を受けてきました。それは不必要または無駄だからです。これは、次の recv() 関数がループの反復ごとに新しいバッファーを必要とするかどうか疑問に思います。
while (totalBytesRecvd < echoStrLen)
{
char buffer[BUFSIZE];
numBytes = recv(sock, buffer, BUFSIZE - 1, 0);
...
totalBytesRecvd += numBytes;
buffer[numBytes] = '\0';
fputs(buffer, stdout);
}
recv() のドキュメントでは、バッファ ポインタの使用方法については何も言及されていません。理解を深めるために、ループの直前にバッファーを定義してみました。recv() は、バッファーを再定義するのではなく、バッファーを上書きしているように見えます。recv() にはバッファの先頭へのポインタが渡されるため、これは理にかなっています。
ループ内でバッファを何度も定義する特定の理由はありますか? または、これに関する私の基本的な理解は正しいですか?