首页 > 代码库 > gcc编译通过,运行却显示“段错误”的解决方法
gcc编译通过,运行却显示“段错误”的解决方法
?第一次在Liunx上(liunx mint 17)使用gcc编译c文件,竟然提示“找不到stdio.h",经过google后发现执行
sudo apt-get install build-essential
即可,详见:http://slipper-99933.blog.163.com/blog/static/39954044201021651833785/
正文:
?刚学习了柔性数组,照教程写了用柔性数组生成斐波那契数列,经过一翻修改后gcc编译通过,运行时却提示”段错误“。google一下说很可能是数组赿界导致的内存访问错误。仔细检查果然是因为对未赋值的指针进行访问的缘故。
?为避免这类问题以后凡是定义指针都要先初始化,还要严格注意对指针先赋值后访问。
?
?修改前:
typedef struct _soft_array{ int len; int array[];}softarray;softarray* create_soft_array(int size){ softarray* ret; ret->len = size; if( size > 0 ) { return ret = (softarray*)malloc( sizeof(*ret) + sizeof(int)*size ); } return ret = NULL;}
?修改后:
typedef struct _soft_array{ int len; int array[];}softarray;softarray* create_soft_array(int size){ softarray* ret = NULL; if( size > 0 ) { ret = (softarray*)malloc( sizeof(*ret) + sizeof(int)*size ); ret->len = size; } return ret;}
date:2014-10-25
gcc编译通过,运行却显示“段错误”的解决方法
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。