/ / Je v Pebble skutočne potrebná voľná pamäť na výstupe? - c, kamienkové hodinky, kamienkové-sdk

Je voľná () pamäť na výstupe () skutočne potrebná v Pebble? - c, kamienkové, hodinky, oblázkové

V Viac C Koncepty (Google webcache, nie na Internet Archive), čítam nasledovné:

Keď sa aplikácia ukončí alebo keď už nie je potrebná vyrovnávacia pamäť, pamäť musieť byť uvoľnené pre aplikácie na použitie:

// Free dynamically allocated memory
free(s_buffer);

V Učenie C pre Pebble SDK (Internetový archív), Čítam:

Na rozdiel od iných jazykov (napríklad Python alebo JavaScript) sa jazyk C spolieha na vývojárov, ktorí spravujú akúkoľvek pamäť, ktorú používajú. To znamená, že akákoľvek pamäť alokovaná programom na ukladanie dát musieť byť znova uvoľnený vývojárom, aby ho mohli využiť aj iné progamy.

Som zvyknutý na programovanie na non-embeddedscenáre, kde každá aplikácia má svoj vlastný adresný priestor a po ukončení procesu OS získa späť pridelenú pamäť. Obidve vyššie uvedené vyhlásenia spoločnosti Pebble's SDK však naznačujú, že ak zavolám malloc() a potom program opustí alebo je zabitý pred volaním free() hodinky nebudú schopné obnoviť pamäť. Zobrazuje tiež príklady dekinializačných okien po ukončení slučky udalostí atď.

Naozaj som dúfal, že ak budem potrebovaťdynamicky vypočítať veľkosť vyrovnávacej pamäte raz pri štarte som sa nemohol starať o vyčistenie pred procesom výstupu. Samozrejme, pri veciach, ktoré majú kratšiu životnosť ako proces, by som ich musel sledovať a vyčistiť veci, aby som predišiel úniku údajov a nespôsobil mi nedostatok pamäte. Ale snažiť sa to urobiť všetko—A to viac spôsobom, ktorý to zabezpečí free() alebo *_deinit() dostane volanie, aj keď program skončí nečistý - zdá sa, že je to strata času a nemožné.

Ako môžete napísať aplikáciu Pebble Watch bezpečneže keď je aplikácia zabitá, všetka pridelená pamäť je uvoľnená? Alebo systém Pebble sleduje a čistí prostriedky pridelené aplikáciou, keď sa skončí ako moderné operačné systémy?

odpovede:

3 pre odpoveď č. 1

Odpoveď sa zdá byť:

  • Áno, po ukončení vašej aplikácie sa všetko vyčistí, či už prostredníctvom ukončenia aplikácie alebo ukončenia
  • Zabezpečenie 0B nahlásených ako stále pridelených na výstupe je dobrou praxou, pretože pomáha zabrániť úniku pamäte.

Ako ste videli, oficiálna dokumentácia jetakmer úplne ticho na túto tému, tak krátke vyhlásenie od Pebble dev nebudeme môcť získať definitívnu odpoveď.Máme niekoľko možností, ako sa priblížiť, aj keď: prvý je obrátiť na Pebble fóra:

Môžeme tiež skontrolovať, že najspoľahlivejší zdroj, Reddit / R / pebbledevelopers, ktorí tvrdia:

Môžeme sa tiež pozrieť tejto sady snímok, obzvlášť:

Veľkosť zásobníka Aplite

(Verím, že to platí len pre Aplite, a.k.a. Pebble 1.O)

čo by naznačovalo, že "nie je veľa aplikácie" headroom "- ak aplikácia alebo aplikácie začali unikať a neboli úplne vyčistené operačným systémom, rýchlo by to znemožnilo spustenie nových aplikácií.

Záver: Na tom by som sa nemal príliš obávať.