S-Function Builder проблемы с утечкой памяти

Обсуждение вопросов, связанных с Simulink

Модератор: Admin

Korsaris
Пользователь
Сообщения: 2
Зарегистрирован: Пн мар 19, 2018 1:11 pm

S-Function Builder проблемы с утечкой памяти

Сообщение Korsaris » Пн мар 19, 2018 1:31 pm

Здравствуйте! Я недавно стал работать в матлабе и в большей мере мне необходимо освоить simulink. Проблема состоит в том что у меня есть алгоритм написанный на С++, у меня получилось его запустить в симуляции и он выдает такие же результаты как и среде разработки которой я работаю, чего я и добивался. Но столкнулся с тем что у меня происходит утечка памяти (данной проблемы не было в СР в которой был написан код), за время моделирования 5 секунд с тактом 20 мс у меня съедает матлаб 6 Гб, поначалу думал что это связанно с тем что не вызывается деструктор класса, сделал его вызов явно, но это не помогло. Пожалуйста помогите разобраться в чем проблема, т.к. перезапускать матлаб после каждого запуска как то неправильно выглядит. Запуск алгоритма осуществляю с помощью S-Function Builder в Simulink, код запуска ниже:

Код: Выделить всё

long double *init = new long double [3];
init[0] = 0.0;
init[1] = 0.0;
init[2] = 0.0;
int NF = N[0];
long double dtF = dt[0], hcomF = hcom[0];
QPTrajectory *obj = new QPTrajectory(init,dtF,hcomF,NF);
long double CopUpF = CopUp[0], CopDownF = CopDown[0], CopUpXF = CopUpX[0],
        CopDownXF = CopDownX[0],taskF = task[0],task2F = task2[0], CenterFootF = CenterFoot[0];
int *PosWalkF = new int [NF];
for(int i =0; i < NF; i++)
    PosWalkF[i] = PosWalk[i];
obj->CalculationCOM(PosWalkF,CopUpF,CopDownF,CopUpXF,CopDownXF, taskF, task2F, 0.5, CenterFootF);
double x = 0;
for(int i = 0; i < NF; i++)
{
    x = i * dtF;
    if(x == Time[0])
    {
        Timealgoritm[0] = x;
        ZMPY[0] = obj->GetZMP()[i];
        PosY[0] = obj->GetPos()[i];
        RefY[0] = obj->GetRef()[i];
        COPYUp[0] = obj->GetCopYUp()[i];
        COPYDown[0] = obj->GetCopYDown()[i];
        AccY[0] = obj->GetAcc()[i];
        VelY[0] = obj->GetVel()[i];
        RefX[0] = obj->GetrefX()[i];
        COPXDown[0] = obj->GetCopXDown()[i];
        COPXUp[0] = obj->GetCopXUp()[i];
        ZMPX[0] = obj->GetZMPX()[i];
        PosX[0] = obj->GetPosX()[i];
        AccX[0] = obj->GetAccX()[i];
        VelX[0] = obj->GetVelX()[i];
    }
}
delete []PosWalkF;
delete obj;


Код вписан в вкладку Outputs. Заранее спасибо!

Korsaris
Пользователь
Сообщения: 2
Зарегистрирован: Пн мар 19, 2018 1:11 pm

Re: S-Function Builder проблемы с утечкой памяти

Сообщение Korsaris » Ср мар 21, 2018 10:53 am

Частично получилось полечить данную проблему, теперь у меня тратится близко 1 Гб за расчет(за 1 тик расчета тратится 6 мб памяти). Может ли сам матлаб кушать для расчета?