В моем классе мы пишем собственную копию функции 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
Что заставляет меня задаться вопросом, когда printf("%s", char*) перестанет печатать символы?