设为首页
收藏本站
用户名
Email
自动登录
找回密码
密码
登录
注册
快捷导航
平台
Portal
论坛
BBS
文库
项目
群组
Group
我的博客
Space
搜索
搜索
热搜:
shell
linux
mysql
本版
用户
LinuxSir.cn,穿越时空的Linuxsir!
»
论坛
›
编程开发讨论区 —— LinuxSir.cn
›
Linux 程序设计专题讨论
›
高手请帮忙,关于大量频繁动态使用内存的问题 ...
1
2
/ 2 页
下一页
返回列表
查看:
1164
|
回复:
14
高手请帮忙,关于大量频繁动态使用内存的问题
[复制链接]
juice
juice
当前离线
积分
70
IP卡
狗仔卡
发表于 2004-10-14 15:24:58
|
显示全部楼层
|
阅读模式
巨郁闷,程序很大,大量频繁地调用calloc和free倒弄内存。
程序中有好几个线程。进程启动后,由于需要,有时会根据客户端条件
杀死一些线程(如网络通讯),然后根据外部条件再次启动线程。
再次启动线程后,线程会再次把第一次calloc一下内存,这次到弄时就会出现段错误,高手们给点建议(除了把动态申请内存改为静态)
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
显身卡
jxppp
jxppp
当前离线
积分
16
IP卡
狗仔卡
发表于 2004-10-15 13:53:50
|
显示全部楼层
既然要频繁的分配内存.那就先分配,不释放,等到整个进程退出的时候再一块释放.不过这需要你自己管理内存.还要多进程的同步问题.
回复
支持
反对
使用道具
举报
显身卡
lzlz
lzlz
当前离线
积分
340
IP卡
狗仔卡
发表于 2004-10-15 15:24:02
|
显示全部楼层
free并不真正立即释放内存,频繁的使用至少作个内存缓冲池吧,而且大使用最好使用mmap
回复
支持
反对
使用道具
举报
显身卡
acguy
acguy
当前离线
积分
232
IP卡
狗仔卡
发表于 2004-10-15 17:27:40
|
显示全部楼层
自已写一个garbage collector.
回复
支持
反对
使用道具
举报
显身卡
lucifer
lucifer
当前离线
积分
750
IP卡
狗仔卡
发表于 2004-10-16 15:20:41
|
显示全部楼层
貌似程序本身有问题啊
回复
支持
反对
使用道具
举报
显身卡
juice
juice
当前离线
积分
70
IP卡
狗仔卡
楼主
|
发表于 2004-10-18 17:32:09
|
显示全部楼层
程序以前是在qnx下的,移植到linux,以前没有错误。
第二次启动线程时,要分配好几次不同大小的内存。当分配的内存数大于上百个字节时,就显示已杀死。
线程跟进程一样把。动态分配也是在堆中分配吧?
不知道有没有跟线程没有指定堆栈大小关系
以前制定了较大的一个先程堆栈,
回复
支持
反对
使用道具
举报
显身卡
juice
juice
当前离线
积分
70
IP卡
狗仔卡
楼主
|
发表于 2004-10-19 18:25:21
|
显示全部楼层
请教 lzlz:怎么在用户态作缓冲池?
有类似于核心态的alloc_skb()函数吗?
mmap在用在分配内存时(不是映射文件时)具体用法
给点帮组 先谢了!
回复
支持
反对
使用道具
举报
显身卡
elssann
elssann
当前离线
积分
120
IP卡
狗仔卡
发表于 2004-10-19 19:58:32
|
显示全部楼层
我提点建议
你可以考虑:
把缓冲区new出来做成链表
用的时候从链表里取
不用了放到链表里去。
程序退出的时候再free
回复
支持
反对
使用道具
举报
显身卡
juice
juice
当前离线
积分
70
IP卡
狗仔卡
楼主
|
发表于 2004-10-20 08:41:17
|
显示全部楼层
你说的是不是相当于以下代码:
#define base 1024;
char *buf[30]
for (i=0;i<50;i++)
{
buf
=malloc(i*base)
}
然后需要时从中赋值就行?
回复
支持
反对
使用道具
举报
显身卡
juice
juice
当前离线
积分
70
IP卡
狗仔卡
楼主
|
发表于 2004-10-20 09:04:30
|
显示全部楼层
我想自己实现一个新的系统调用
在分配前调用用于实现整理内存(类似于bdflush)。不知可否
回复
支持
反对
使用道具
举报
显身卡
下一页 »
1
2
/ 2 页
下一页
返回列表
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
注册
本版积分规则
发表回复
回帖后跳转到最后一页
浏览过的版块
开源软件专题讨论
Gentoo Linux
Copyright © 2002-2023
LinuxSir.cn
(http://www.linuxsir.cn/) 版权所有 All Rights Reserved.
Powered by
RedflagLinux!
技术支持:
中科红旗
|
京ICP备19024520号
快速回复
返回顶部
返回列表