ITPub博客

首页 > 应用开发 > > C++中重复调用memcpy函数,会导致内存不断增加是怎么回事?

C++中重复调用memcpy函数,会导致内存不断增加是怎么回事?

作者:lilyone 时间:2019-08-15 10:11:55 0 删除 编辑
for(int i = 0 ; i < numOfTraces ; i++){

        TraceClass *trace = new TraceClass();

        qDebug() << trace;

        printf("ii=%d,size =%d\n",i,sizeof(TraceClass));

        trace->readTraceHead(fmp);

        delete trace;

        trace = NULL;

        fmp += 240 + 4L * samples;

        progress->setValue(i+1);

        qApp->processEvents(QEventLoop::ExcludeUserInputEvents);

        if(progress->wasCanceled()){

            inLineHashMap.clear();

            xLineHashMap.clear();

            return false;

        }

    }

voidTraceClass::readTraceHead(uchar*fmp){
char*s;
longtemplong;
shorttempshort;
memcpy(&templong,fmp,4);
fmp+=4;
s=(char*)&templong;
TraceHead.TRACENUMBERLINE=BinToLong(s);//001-004
}
(1)如果把fmp +=240 + 4L * samples;注释掉,运行程序,内存不会变化很大;

(2)如果把memcpy这句话注释掉,内存不会飙升,如果不注释掉,内存上升很快达到G。

 

            请了解的大神指教


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/4635/viewspace-3122479/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2019-08-01

  • 博文量
    159
  • 访问量
    977