下面是一个非常简单的例子.它在Mac OS X(Snow Leopard)上使用gcc编译得很好.在运行时它输出总线错误:10.这里发生了什么?
char* a = "abc";
a[0] = 'c';
Run Code Online (Sandbox Code Playgroud)
您的代码设置a为指向的指针"abc",这是无法修改的文字数据.当您的代码违反此限制时会发生总线错误,并尝试修改该值.
试试这个:
char a[] = "abc";
a[0] = 'c';
Run Code Online (Sandbox Code Playgroud)
这将创建一个char数组(在程序的普通数据空间中),并将字符串文字的内容复制到数组中. 现在您可以毫不费力地对其进行更改.