前言
公司里需要开发多个动态库链接在一起的程序,然而经常在一些地方出现莫名其妙的Segment Fault问题,事实上原来可以运行的程序段,却在修改了之后莫名其妙的就不能再运行了
解决方案
1.重新编译所有的动态链接库。有时由于文件Z更新了之后,跟Z直接关联的动态库1重新编译了,但在没有直接关联的动态库2没有重新编译,这时很有可能你下意识认为Z跟动态库2不应该有关联,所以没有重新编译动态库2,这时可能就会导致Segment Fault,原因应该是两者对同一个文件的处理方式不同,导致堆栈空间被破坏。
2.检查你的输入选项。有时你认为的应该出问题的地方,可能并不是问题的关键,反而是一些你认为习以为常的地方出了问题,我在实践中就遇到了这种情况,所以我们在Debug时一定要摆脱惯性思维,对每一步都仔细审阅。
3.检查越界的下标。 在程序员的世界里数组往往都是从0开始的,有时候不经意间,比如在下标处理时取了z=point[3],这时可能就会越界。