Известно, что в С++ строковые литералы неизменяемы, а результат модификации строкового литерала - undefined. Например
char * str = "Hello!";
str[1] = 'a';
Это приведет к поведению undefined.
Кроме того, строковые литералы помещаются в статическую память. Таким образом, они существуют во время всей программы. Я хотел бы знать, почему строковые литералы обладают такими свойствами.