Linux环境下c语言越界编程遇到的最多嘚错误可能非“段错误”莫属了究其原因就是访问的内存超出了系统给这个程序所设定的内存空间,例如访问了不存在的内存地址、访問了系统保护的内存地址、访问了只读的内存地址等等情况
下面贴上我遇到的一个段错误的代码片:
}很简单的一段程序,删除字符串右側的空格但是编译运行之后提示段错误。在调试的时候提示是数组的赋值出现错误首先想到的就是常量不能赋值。那么结果就很显然叻
但是当char *stra="hello h y ";这句话定义的是一个常量。常量是定义在栈里面的然后将这个栈的地址赋给str,常量是不能修改的所以就会出现段错误了。