串口通讯---高手请进 大散分

互通互联 2004-03-31 10:33:13
我在linux下编写了一个串口通讯方面的程序,目前程序有一个致命的错误。就是内存一直都上升,降不下去。

症状:程序运行1小时后vm增加,程序内存下降,总的值保持不变。
一天后,程序所占内存增加,vm值一直增加,并且增加的速度变得很快。

请问linux下kylix编程高手:
1、read() 方法会不会造成也指针,而造成内存增加呢?
其中read()为:
AnsiString Rec="";
Rec.SetLength(512);
read(fd,Rec.c_str,512);

方法2:
AnsiString Rec="";
int num=0;
char rd[1];
rs[0]='\x0';
read(fd,rd,1);
Rec=(String)rd[0];
while(rd[0]!='\x0')
{
num++;
rs[0]='\x0';
read(fd,rd,1);
Rec=Rec+(String)rd[0];
}

2、其他我没有用到指针这个东西啊,几个有限的变量,我也是在线程中声明和初始化的。到该线程结束时,这几个局部变量应该都自动释放了吧?
3、在程序中我用到了一个数据。其原型是这样的。
char gMsg[50];
bzero(gMsg,50);
这中间有错吗?这个数据是否也要释放呢?如果要,该如何释放?



有请高手帮忙!!!!!!!!!!





...全文
37 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
wmrwinhap 2004-04-02
  • 打赏
  • 举报
回复
memset(mMsg,0,50);
daidai_____DD 2004-04-01
  • 打赏
  • 举报
回复
停掉你的这两个过程,看看内存是不是增加。然后再找原因吧!~
whiteclouds 2004-04-01
  • 打赏
  • 举报
回复
用Free可以看字节单位的内存使用情况.
互通互联 2004-04-01
  • 打赏
  • 举报
回复
谢谢 wide288(鱼)了。
互通互联 2004-04-01
  • 打赏
  • 举报
回复
目前在rad hat9。0里面有一个任务管理器可以看,但是看内存的话,只能到MB,我想看到的单位为字节。
互通互联 2004-04-01
  • 打赏
  • 举报
回复
具体一点吗?
例如我的程序名为
MyFile
怎样使用top?
互通互联 2004-04-01
  • 打赏
  • 举报
回复
不过在做的过程中,有一个问题,就是我要清空一个数组,该如何办好呢?
例如:
char mMsg[50];
如何清空它呢?
我最开始的办法是:bzero(mMsg,50);
可是效果不是很好饿i.在结合read(fd,mMsg,50);的时候内存会增加.这个该如何处理?

wide288 2004-04-01
  • 打赏
  • 举报
回复
top
就可以测内存
互通互联 2004-04-01
  • 打赏
  • 举报
回复
好累
哈哈终于解决了,谢谢大家了。
pacman2000 2004-04-01
  • 打赏
  • 举报
回复
唉。。。实在不行的话,就先把程序里的动态分配的地方都注了,然后一个一个地找。。。
互通互联 2004-04-01
  • 打赏
  • 举报
回复
按照 yaxii(笑影) 的方法将连个线程停掉之后,只运行,主线程,系统的VM值,还是在一直增长中,我继续努力。。。。
互通互联 2004-04-01
  • 打赏
  • 举报
回复
还有就是在linux下面vm的值和内存是在怎么分配的呢?
互通互联 2004-03-31
  • 打赏
  • 举报
回复
还有,就是有没有linux下的内存资源监测器?
小弟是个linux菜鸟。呵呵。请高手赐教。

23,120

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧