Where is the undefined behavior when using const_cast<>?

二次信任 提交于 2019-12-01 17:40:39

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.

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";
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!