是否可以在 C++ 中创建可修改的字符串文字?例如:
char* foo[] = {
"foo",
"foo"
};
char* afoo = foo[0];
afoo[2] = 'g'; // access violation
这会产生访问冲突,因为“foo”是在只读内存中分配的(我相信是.rdata部分)。有什么方法可以强制“foo”进入可写内存(.data 部分)?即使通过编译指示也是可以接受的! (Visual Studio 编译器)
我知道我可以做 strdup 和许多其他事情来解决这个问题,但我想具体知道我是否可以按照我的要求做。 :)
由于这是 C++,“最佳”答案是使用字符串类(std::string
, QString
, CString
等,具体取决于您的环境)。
要直接回答您的问题,您不应该修改字符串文字。该标准称这是未定义的行为。您确实需要以一种或另一种方式复制该字符串,否则您将编写不正确的 C++。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)