C语言碰到的奇怪问题

大qs_icezhou
  • 8

问题描述:
       往文件中写入结构化的二进制数据,然后再读出来。刚开始运行4次时正常,第5次,程序执行到一半退出。然后继续执行,每隔3次,就会出现一次同样的问题。
问题出现得很有规律,但是在会发生问题的那一次,使用debug调试,又可以正常运行了。
想请大神看看到底是什么问题导致的。(本人C语言小白,实在是搞不定了)

开发环境:Dev C++ 5.11
编译选项:-std=c99

代码量有几百行,上传到了gitee中,就不在这里放出了。

克隆地址:
https://gitee.com/imicezhou/m...

git@gitee.com:imicezhou/minidb3.git

回复
阅读 626
2 个回答

盲猜一波,内存溢出

也是盲猜,不想分析大段代码。
估计是某次内存申请失败处理不合适,造成内存访问越界,从而程序出错退出吧。
你的出错成一定规律性,感觉上因为开始内存申请是成功的,后面申请估计是失败了,但相应处理不恰当吧。

比如你的bitmap.c中的实现就没有考虑过内存申请失败的情况

BitMap *new_bitmap() {
    BitMap *bm = (BitMap *)malloc(sizeof(BitMap));
    memset(bm, 0, sizeof(BitMap));    //初始化
    bm->notempty = 0;
    bm->bitcount = 1<<11; //2^11 
    return bm;
}
宣传栏