C90程序触发Aborted (core dumped)错误求排查(新手求助)
C90程序使用realloc构建集合触发Aborted (core dumped)错误排查
问题概述
我是C语言新手,编写C90程序实现以下功能:读取用户输入的整数列表(输入以EOF结束),用realloc构建集合并按整数首次出现顺序输出唯一值(去重)。已完成my_set.h与my_set.c代码,包含get_set、print_set等函数,但程序在输入8个字符后触发Aborted (core dumped)错误,请求排查问题。
常见错误原因及排查点
realloc使用失误:- 未检查
realloc返回值:分配失败返回NULL时,直接覆盖原指针会丢失内存地址,后续访问触发错误。 - 初始指针未正确初始化:若初始指针为非
NULL的垃圾值,调用realloc会导致未定义行为。 - 扩容大小计算错误:比如按字符数而非整数个数计算内存,导致空间不足。
- 未检查
- 数组越界访问:检查整数是否存在于集合时,超出当前数组长度访问内存,触发非法内存访问。
- 输入处理错误:读取整数时格式处理不当(比如用错误的
scanf格式符),或未处理非整数输入,破坏堆结构。 - 指针/内存操作错误:提前释放内存、重复释放或野指针操作,导致内存访问异常。
需要补充的信息
请提供以下内容以便精准定位问题:
my_set.h和my_set.c的完整代码- 触发错误的具体输入内容
- 若有gdb调试的堆栈回溯信息,也可附上
内容的提问来源于stack exchange,提问作者SosoMath_TryingMyBest.
相关产品推荐
相关产品推荐

