更新
试图修改字符串文字是未定义的行为。如果我们查看草案 C++ 标准部分2.14.5
字符串文字第12段说:
是否所有字符串文字都是不同的(即,存储在不重叠的对象中)是实现定义的。尝试修改字符串文字的效果是未定义的。
崩溃是未定义行为的许多可能结果之一,也可能有一个程序似乎可以正常工作。
或者,您可以创建一个自动数组,如下所示:
char str[] = "test" ;
它将具有字符串文字的副本,然后您可以对其进行修改。
原来的
如果myfunc
正在修改字符串文字,那么您有未定义的行为,这很容易导致您的程序崩溃。