В моем классе мы пишем собственную копию функции C malloc(). Чтобы протестировать мой код (который в настоящее время может выделить пространство в порядке), я использовал:
char* ptr = my_malloc(6*sizeof(char));
memcpy(ptr, "Hello\n", 6*sizeof(char));
printf("%s", ptr);
Вывод обычно будет таким:
Hello
Unprintable character
Некоторая отладка показала, что мой код не вызывает этого как такового, поскольку память ptr выглядит следующим образом:
[24 байта метаинформации] [Количество запрошенных байтов] [Заполнение]
Итак, я понял, что printf добирается до прокладки, которая является просто мусором. Поэтому я проверил тест:
printf("%s", "test\nd");
и получил:
test
d
Что заставляет меня задаться вопросом, когда DOES printf ( "% s", char *) останавливает печать символов?