При приеме данных через сокет с помощью recv, я заметил, что, с:массив символов по сравнению с указателем полукокса
char buffer[4]; memset(buffer, 0, 4); recv(socket, buffer, 4, 0);
Я получаю
mesgx
«mesg» - это то, что я отправил, с добавлением некоторых случайных символов.
Если я использую
char * method = (char *) malloc(4); memset(buffer, 0, 4); recv(socket, buffer, 4, 0);
вместо этого, я получаю
MESG
Так что нет случайных вещей прилагается к моей строке. Я понял, что если я использую char [5], то он работает так же хорошо, но я действительно не понимаю, почему. Действительно ли malloc (4) выделяет 5 байтов, пятый - NUL?
Я так много думал, но почему он работает с malloc? – fresskoma