recvを使用してソケット経由でデータを受信すると、次のように気づきました。
文字バッファ[4]; memset(バッファ、0、4); recv(ソケット、バッファ、4、0);
私は受け取ります
mesgx��
「mesg」は私が送信したもので、ランダムな文字が追加されています。
私が使用する場合
char * メソッド = (char *) malloc(4); memset(バッファ、0、4); recv(ソケット、バッファ、4、0);
代わりに、私は受け取ります
メッセージ
したがって、文字列にランダムなものが追加されることはありません。代わりに char[5] を使用しても同様に機能することがわかりましたが、その理由はよくわかりません。malloc(4) は本当に 5 バイトを割り当て、5 番目は NUL ですか?