If I do:
const char* const_str = \"Some string\";
char* str = const_cast(const_str); // (1)
str[0] = \"P\"; // (2)
Where (wh
You are attempting to modify a constant string which the compiler may have put into a read-only section of the process. This is better:
char str[32];
strcpy(str, "Some string");
str[0] = "P";
Line (2) has undefined behaviour. The compiler is at liberty to place constants in read-only memory (once upon a time in Windows this would have been a "data segment") so writing to it might cause your program to terminate. Or it might not.
Having to cast const-ness away when calling a poorly-defined library function (non-const parameter which should be const) is, alas, not unusual. Do it, but hold your nose.