免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2958 | 回复: 6

[C] 此种情况如何改进能够防止C程序内存溢出? [复制链接]

论坛徽章:
0
发表于 2013-07-01 14:51 |显示全部楼层
    输入数据为N个块(segment),每个块为一个长字符串。现在要做的是遍历每个块,保存所有长度为k的子串(kmer)在块中的位置(pos),每个不同的kmer我将其转换一个唯一数字(id)。我用指针数组为每个id保存pos,例如 int *plustable[id],遍历每个segment时,每遇到一个kmer,就将其pos加入到对应的*plustable[id]中。
    现在的问题就是随着遍历的深入,保存在内存中的*plustable[id]会越来越多,数据量也会越来越大。我曾经考虑过当内存不够时,将*plustable[id]写入文件,可是这样的话,到最后写入数据库的时候,需要更新文件若干次,效率降低了,处理起来也比较复杂。
    请问大家有没有比较好的解决办法,让此程序能够控制内存的使用,防止内存溢出。

论坛徽章:
0
发表于 2013-07-01 15:07 |显示全部楼层
防止内存溢出

论坛徽章:
0
发表于 2013-07-01 15:18 |显示全部楼层
额。。。是我的问题没表述清楚还是别的什么?咋没人捏?

论坛徽章:
0
发表于 2014-11-06 15:22 |显示全部楼层
可以使用链表方式存!回复 1# xlwang_0903


   

论坛徽章:
2
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:56:11
发表于 2014-11-07 06:02 来自手机 |显示全部楼层
可以使用数组+链表来存储。

论坛徽章:
59
2015年亚洲杯之约旦
日期:2015-01-27 21:27:392015年亚洲杯之日本
日期:2015-02-06 22:09:41拜羊年徽章
日期:2015-03-03 16:15:432015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:50:282015元宵节徽章
日期:2015-03-06 15:50:392015年亚洲杯之阿联酋
日期:2015-03-19 17:39:302015年亚洲杯之中国
日期:2015-03-23 18:52:23巳蛇
日期:2014-12-14 22:44:03双子座
日期:2014-12-10 21:39:16处女座
日期:2014-12-02 08:03:17天蝎座
日期:2014-07-21 19:08:47
发表于 2014-11-07 08:24 |显示全部楼层
int main(){
   printf("请将内存增加到1000G以上, 否则所在大楼即该起爆, 现在开始倒计时: 5 ... 4 ... 3 ...");
}

论坛徽章:
1
15-16赛季CBA联赛之同曦
日期:2016-04-23 22:00:26
发表于 2014-11-08 10:04 |显示全部楼层
BTree     
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP