В моем классе мы пишем нашу собственную копию функции 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 *) перестает печатать символы?