免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4466 | 回复: 7
打印 上一主题 下一主题

[C]在C语言中申请大内存的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-11-07 09:49 |只看该作者 |倒序浏览
程序需要将千万级的数据读入到内存中,在使用malloc函数分配内存时,总是出现 malloc error的错误

目前程序运行的系统是 HPUNIX

请问:

1,如何扩大程序运行时可分配的堆空间,也就是使malloc等函数能够申请到的更多空间?

2,有没有更好的方法,不用使用大内存,而是循环使用一块小内存就可以实现大内存的操作?


企盼高手作答!!!

[ 本帖最后由 brilliantcn 于 2007-11-7 10:07 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2007-11-07 09:56 |只看该作者
问题描述的不清楚

论坛徽章:
0
3 [报告]
发表于 2007-11-07 10:06 |只看该作者

Suggest.

1. 调整系统参数,增加应用程序的栈大小
2. 如果采用小内存,算法要改进,用一些局部算法,即一次处理一部分数据而大部分数据置于temp文件中。

论坛徽章:
0
4 [报告]
发表于 2007-11-07 10:09 |只看该作者
1,不是栈大小,而是堆的大小

2,大家能不能说的详细一些,能够让我尽快的应用的程序中


原帖由 vatdog 于 2007-11-7 10:06 发表
1. 调整系统参数,增加应用程序的栈大小
2. 如果采用小内存,算法要改进,用一些局部算法,即一次处理一部分数据而大部分数据置于temp文件中。

论坛徽章:
0
5 [报告]
发表于 2007-11-07 10:21 |只看该作者
将大量数据有规律的放到文件中,然后每次读出一部分进行处理。

论坛徽章:
0
6 [报告]
发表于 2007-11-07 11:51 |只看该作者
试试处理一下yourapp再运行试试;

/usr/bin/echo 0200000|dd of=yourapp bs=4 count=1 seek=19 conv=notrunc

论坛徽章:
0
7 [报告]
发表于 2007-11-07 11:56 |只看该作者
1)千万级?如果是一千万个字符,只占10MB,没问题。进程有3GB用户空间。int也只有4MB。
2)一般是放在文件里,进程对文件操作。

论坛徽章:
0
8 [报告]
发表于 2007-11-07 12:10 |只看该作者
千万级的数据
这是多少???

不一定要在堆里面分配嘛,太大了的话,直接用系统调用分配内存。
man brk
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP