我有一个简单的程序,但在 *(str + start)
遇到访问冲突.为什么?我应该可以改变它。对吗?
void fn()
{
char *str = "Hello wordl!";
int end = strlen(str);
int start = 0;
end--;
while(start < end)
{
*(str + start) = *(str + end); <--- Access violation writing location *(str + Start).
end--;
start++;
}
}
最佳答案
char *str = "Hello World";
是一个常量字符串,不能修改。编译器可以随意将其放入不可写的位置,从而导致您看到的崩溃。
将声明替换为 char str[] = "Hello World";
应该做你想做的,把字符串放入堆栈上的可修改数组中。
关于memory-management - 如何解决访问冲突写入位置错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/652153/