指向另一个指针的指针崩溃

时间:2018-04-19 10:51:50

标签: objective-c c xcode pointers llvm

我正在尝试将指针y分配给指针x,* x = * y但是如果testChar是指针则会崩溃。

char *testChar = "abc";
char *x = testChar;
char *y = testChar + 1;
char temp;
temp = *x;
*x = *y;
*y = temp;

如果我将代码更改为char testChar []而不是* testchar,那么它的工作正常。任何人都能解释一下这些差异吗?

1 个答案:

答案 0 :(得分:3)

字符串" abc"存储在只读存储器(程序的二进制文件)中。因此,您试图修改只读数据,这是不可能的。

相反,你可以这样做:

char *testChar = strdup("abc"); // allocate new (writable) memory and copy this const string there.
char *x = testChar;
char *y = testChar + 1;
char temp;
temp = *x;
*x = *y;
*y = temp;

请注意,testChar指向您不再需要时自由负责的内存(与malloc相同)。