当前位置: 技术问答>linux和unix
串口通讯---高手请进 大散分
来源: 互联网 发布时间:2015-06-13
本文导语: 我在linux下编写了一个串口通讯方面的程序,目前程序有一个致命的错误。就是内存一直都上升,降不下去。 症状:程序运行1小时后vm增加,程序内存下降,总的值保持不变。 一天后,程序所占内存增加,v...
我在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);
这中间有错吗?这个数据是否也要释放呢?如果要,该如何释放?
有请高手帮忙!!!!!!!!!!
症状:程序运行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);
这中间有错吗?这个数据是否也要释放呢?如果要,该如何释放?
有请高手帮忙!!!!!!!!!!
|
top
就可以测内存
就可以测内存
|
停掉你的这两个过程,看看内存是不是增加。然后再找原因吧!~
|
memset(mMsg,0,50);
|
唉。。。实在不行的话,就先把程序里的动态分配的地方都注了,然后一个一个地找。。。