Я следующий кодStrLen из полукокса * таНос
char *new_str;
int size_in_bytes;
int length;
size_in_bytes = 2*sizeof(char);
new_str = (char *)malloc(size_in_bytes);
length = strlen(new_str);
Ожидая длина быть 2, на самом деле это 16. Может кто-нибудь объяснить, почему?
Этот код читает за пределами выделенной памяти и может привести к неопределенному поведению –
Используйте 'calloc()', тогда вы получите правильный ответ (который должен быть 0). Нет (переносного) способа определить размер выделенного блока (если в последнем стандарте нет чего-то нового). – TMN