Stoffet til artikkelen er hentet fra min .

Forbedre eksempelet pÄ tonegeneratoren
I forrige Vi skrev en tonegeneratorapplikasjon og brukte den til Ä trekke ut lyd fra en datamaskinhÞyttaler. NÄ vil vi legge merke til at programmet vÄrt ikke returnerer minnet tilbake til haugen nÄr det er ferdig. Det er pÄ tide Ä avklare dette problemet.
Etter at vi ikke lenger trenger kretsen, bÞr frigjÞring av minne begynne med Ä stoppe datarÞrledningen. For Ä gjÞre dette mÄ du koble klokkekilden og tickeren fra kretsen ved Ä bruke funksjonen ms_ticker_detach(). I vÄrt tilfelle mÄ vi koble tickeren fra filterinngangen voidsource:
ms_ticker_detach(ticker, voidsource)Forresten, etter Ă„ ha stoppet transportĂžren, kan vi endre kretsen og sette den i drift igjen, igjen koble tickeren.
NĂ„ kan vi fjerne den ved Ă„ bruke funksjonen ms_ticker_destroy():
ms_ticker_destroy(ticker)TransportĂžren har stoppet og vi kan begynne Ă„ demontere deler av den og koble fra filtrene. For Ă„ gjĂžre dette, bruk funksjonen ms_filter_unlink():
ms_filter_unlink(voidsource, 0, dtmfgen, 0);
ms_filter_unlink(dtmfgen, 0, snd_card_write, 0);formÄlet med argumentene er det samme som for funksjonen ms_filter_link().
Vi fjerner de nÄ separerte filtrene ved hjelp av ms_filter_destroy():
ms_filter_destroy(voidsource);
ms_filter_destroy(dtmfgen);
ms_filter_destroy(snd_card_write);Ved Ä legge til disse linjene i vÄrt eksempel vil vi oppnÄ en korrekt programavslutning med tanke pÄ minnehÄndtering.
Som vi kan se, krevde riktig fullfÞring av programmet at vi la til omtrent samme antall kodelinjer som i begynnelsen, med et gjennomsnitt pÄ fire kodelinjer per filter. Det viser seg at stÞrrelsen pÄ programkoden vil Þke proporsjonalt med antall filtre som brukes i prosjektet. Hvis vi snakker om tusen filtre i kretsen, vil fire tusen linjer med rutineoperasjoner for Ä lage og Þdelegge dem bli lagt til koden din.
NÄ vet du hvordan du avslutter et program pÄ riktig mÄte ved hjelp av en mediastreamer. I de fÞlgende eksemplene, for kompakthetens skyld, vil jeg "glemme" Ä gjÞre dette. Men du vil ikke glemme?
Utviklerne av mediastreameren ga ikke programvareverktĂžy for Ă„ lette manipulering av filtre ved montering/demontering av kretser. Likevel finnes det en hjelper som lar deg raskt sette inn/fjerne et filter fra kretsen.
Vi kommer tilbake til Ä lÞse dette problemet senere, nÄr antallet filtre i eksemplene vÄre overstiger et par dusin.
Neste Vi skal sette sammen en signalnivÄmÄlerkrets og lÊre Ä lese av mÄleresultatet fra filteret. La oss evaluere mÄlenÞyaktigheten.
Kilde: www.habr.com
