I think it's your C# training causing you to see ghosts
A 'const char *' pointer points to a char array defined in the executable. Pointing to the constant string "$n seems to be blinded!" is allowed without memory allocation because the string is stored when compiling in a part of the binary along with other strings. Typically, this loaded as a part of the code which means it will typically reside in read-only memory.
Your suggested change would use a specific sized buffer and
copy from the constant string pool. This is an extra, unneeded step in C, as it is perfectly reasonable for a string to reside in the code and be read from there directly on use.
Note that this is the reason those particular pointers are "const"; it is explicitly forbidden (in practice enforced by both the compiler and the libraries) to try and change those strings.
user-web.icecube.wisc.edu/~dglo/c_class/array_ptr.html
shows more details.