如果我在Xcode中启动一个新的命令行C项目并输入以下代码,我在编译项目时总会收到EXC_BAD_ACCESS错误。
int main(int argc, const char * argv[])
{
char *foo = "Hello";
*foo = 'M'; // get EXC_BAD_ACCESS here when compiling
}
我只是在学习C而且不能训练这句话有什么问题?我只是想在某个内存位置更改角色。有没有人有任何想法?
答案 0 :(得分:1)
BAD_ACCESS对Mac来说是Linux的分段错误。你在破坏记忆。我还假设你在执行过程中得到了这个错误,而不是编译(因为那会很奇怪)。
编辑:
我还想指出,当静态分配时,这不会发生。
int main(int argc, const char * argv[])
{
char foo[] = "Hello";
*foo = 'M'; // no more EXC_BAD_ACCESS here
}
答案 1 :(得分:0)
您的代码有未定义的行为。您正在尝试修改字符串文字。