概述
终端在运行的时候总是出现
“段错误 (核心已转储) ”
栈空间用来存储数组等数据,那么段错误就应该是我存储的数组超过了它所在段的大小,于是在的程序执行的过程中一到跟大数组相关的步骤就会出现段错误的提示(SIGSEGV: Segmentation fault)。
linux下应用 ulimit -a 命令查看当前栈空间大小,得到:
8012
即我的系统下栈空间应该为8M,而可以自己算下自己定义的数组大小,发现我的数组每个大概3M多,而我的数组个数也大于3个,我的gdb中调试的过程中也恰巧是在第三个大维数数组那出现的问题,我的数组的确越过了stack段的边界,出现了错误。
▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂
如何解决这个问题呢?
我用
ulimit -s 102400
将栈的大小改为100M(这回可够用了),然后运行程序或者debug,程序就能正确运行了。
我在其他人的帖子里看见一些人说用vector容器可能会更好,自己还没有去深入学习,这是我下一步个工作吧,今天先把怎么解决这个问题的过程帖子这里。希望可以和大家交流下关于段错误的问题。
最后
以上就是忧伤鸡为你收集整理的“段错误 (核心已转储) ”一种可能原因及其解决方法的全部内容,希望文章能够帮你解决“段错误 (核心已转储) ”一种可能原因及其解决方法所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复