필터 지우기
필터 지우기

How to free memory from C-code in simulink embedded matlab code block

조회 수: 4 (최근 30일)
Rodrigo Lopez Negrete
Rodrigo Lopez Negrete 2022년 6월 28일
답변: Walter Roberson 2022년 6월 28일
Hi all,
I have an embedded matlab code block in a simulink simulation that makes calls to c functions to allocate memory and do some calculations. For example the code below: assume varA, varB are data structures created and allocated in C using the memallocfun function call.The types are defined in C.
persistent firstCall varA varB
if isempty(firstCall)
firstCall =1;
varA = coder.opaque('somestruct1 *','NULL','HeaderFile','defs.h');
varB = coder.opaque('somestruct2 *','NULL','HeaderFile','defs.h');
coder.ceval('memallocfun',coder.ref(varA),coder.ref(varB));
end
coder.ceval('workfun',coder.ref(varA),coder.ref(varB));
This code works and runs properly. My issue is that after the simulation is done I'd like to free the memory that was allocated by memallocfun. Should I do that in the StopFcn callback? Will StopFcn have access to the persistent variables created here? Otherwise, where should I free the memory created by C?
thanks!
Rodrigo

답변 (1개)

Walter Roberson
Walter Roberson 2022년 6월 28일
StopFcn will not have access to the persistent variables. Use global and a datastore

카테고리

Help CenterFile Exchange에서 Sources에 대해 자세히 알아보기

제품


릴리스

R2016b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by