<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">Alejandro,<div class="">Vai dar um pouco de trabalho, mas se vc não fizer eu agarantcho que a chance é muito grande de vc se arrepender no futuro.</div><div class="">Acho muito provável que exista código pronto para gerir filas do tipo LIFO/FIFO, que parece ser o seu caso.</div><div class="">-RT</div><div class=""><br class=""><div><blockquote type="cite" class=""><div class="">On 15 de fev de 2016, at 12:21, Alejandro Mesias <<a href="mailto:ale.mesias@gmail.com" class="">ale.mesias@gmail.com</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div dir="ltr" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class="">Devo trocar tudo por vetores. Estou desenvolvendo um produto que tem teclado + LCD + MicroSD.<div class=""><br class=""></div><div class="">Os dados que leio estão no MicroSD, processo os dados e gero um Menu. Esse menu é todo alocado com Malloc, é basicamente uma lista de array de char. Vou ver de substituir por uma lista bidimensional, o tamanho dos intens vai ser igual mas, acredito que fique mais fácil de manter a lista e limpar da memória. A lista não vai ter um tamanho fixo, apenas largura fixa.</div><div class=""><br class=""></div><div class="">Vai dar um belo trabalho, mas como tenho alguns comportamentos estranhos no código, espero reduzir.</div><div class=""><br class=""></div><div class="">Ps: Comportamento estranho: se eu não imprimo uma variável ela some, variável que não tem nada a ver com essa lista que falei.</div></div><div class="gmail_extra" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;"><br class=""><div class="gmail_quote">Em 15 de fevereiro de 2016 11:48, DQ<span class="Apple-converted-space"> </span><span dir="ltr" class=""><<a href="mailto:dqsoft.blogspot@gmail.com" target="_blank" class="">dqsoft.blogspot@gmail.com</a>></span><span class="Apple-converted-space"> </span>escreveu:<br class=""><blockquote class="gmail_quote" style="margin: 0px 0px 0px 0.8ex; border-left-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; padding-left: 1ex;"><div dir="ltr" class="">Uma outra estratégia comum (apesar de perigosa) é o famoso byte aux[100] - uma buffer auxiliar que é usado como área temporária em vários lugares. Tomando o cuidado para que duas rotinas não usem esta área auxiliar ao mesmo tempo e que ela tenha tamanho suficiente para a maior necessidade, isto pode substituir a declaração de vários buffer de uso específico que ocupariam mais memória.<br class=""><br class="">(Obs: tenho a impressão que esta discussão já rolou antes por aqui).<span class="HOEnZb"><font color="#888888" class=""><br class=""><br class="">DQ</font></span><div class=""><div class="h5"><br class=""><br class="">On Monday, February 15, 2016 at 11:44:53 AM UTC-2, DQ wrote:<blockquote class="gmail_quote" style="margin: 0px 0px 0px 0.8ex; border-left-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; padding-left: 1ex;"><div dir="ltr" class="">Recomendo uma leitura da documentação da biblioteca C do avr-gcc:<span class="Apple-converted-space"> </span><a href="http://www.nongnu.org/avr-libc/" rel="nofollow" target="_blank" class="">http://www.nongnu.org/avr-libc/</a><br class=""><br class="">Basicamente malloc utiliza a estratégia "best-fit" para alocar blocos dentro da área entre as varáveis estáticas e a pilha. O problema de fragmentação surge quando alocações e liberações ocorrem de forma desordenada. Quando um bloco é liberado o free tenta juntar com os blocos livres adjacentes mas o máximo que pode ser alocado é o maior bloco livre.<br class=""><br class="">Por exemplo, vamos supor que você tenha 4K e aloque três blocos (nesta ordem): A (1K), B(2K) e C(1K). Se você liberar A e C, você fica com dois blocos livres de 1K; apesar da memória livre total ser 2K o máximo que você consegue alocar é 1K.<br class=""><br class="">Se você alocar alguns blocos no início e nunca liberá-los, não há fragmentação. Se você alocar vários blocos e depois liberá-los, sem nenhuma outra alocação no meio, também não tem problema. Por exemplo, vamos supor que sua rotina de menu aloca vários blocos, espere o operador fazer uma seleção, libere os blocos e depois execute o que foi selecionado. Não vai ter problema.<br class=""><br class="">DQ<br class=""><br class="">On Monday, February 15, 2016 at 8:59:13 AM UTC-2, Mesias wrote:<blockquote class="gmail_quote" style="margin: 0px 0px 0px 0.8ex; border-left-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; padding-left: 1ex;"><div dir="ltr" class="">Estava lendo alguns posts e discussões sobre fazer malloc no Arduino (ou em sistemas embarcados).<div class=""><br class=""></div><div class="">Parece que ele vai bagunçado a memória com o tempo, por não reutilizar bem as memórias que ele liberou.</div><div class=""><br class=""></div><div class="">O processo que tenho é simples, leio alguns dados, reservo a memória para mostrar um menu e depois limpo ela antes de executar funções, sempre limpo em seguida. Mas estou na duvida se deveria partir para alocação estática.<br clear="all" class=""><div class=""><br class=""></div>--<span class="Apple-converted-space"> </span><br class=""><div class="">======================================<br class="">Alejandro Mesias André Nebra Perez<br class="">Java/Python/Js/Something else Developer<br class="">Twitter: @meszias<br class="">Linux User #442506<br class="">Campinas - SP - Brasil - South America<br class="">======================================</div></div></div></blockquote></div></blockquote></div></div></div><div class="HOEnZb"><div class="h5"><div class=""><br class="webkit-block-placeholder"></div>--<span class="Apple-converted-space"> </span><br class="">-... . . -..- -.-. . .-.. .-.. . -. - - --- . .- -.-. .... --- - .... . .-.<br class="">Regras da Lista:<span class="Apple-converted-space"> </span><a href="https://garoa.net.br/wiki/Lista:LeiaAntesDeClicarNoSend" target="_blank" class="">https://garoa.net.br/wiki/Lista:LeiaAntesDeClicarNoSend</a><br class="">Para mais informações sobre o Garoa Hacker Clube acesse<span class="Apple-converted-space"> </span><span class="Apple-converted-space"> </span><a href="https://garoa.net.br/" target="_blank" class="">https://garoa.net.br</a><br class="">Maiores opções sobre o Google Groups, visite:<span class="Apple-converted-space"> </span><a href="https://groups.google.com/group/hackerspacesp" target="_blank" class="">https://groups.google.com/group/hackerspacesp</a><br class="">.--. .- .-. .- -- .- .. ... .. -. ..-. --- .-. -- .- . ... .- -.-. . ... ... . --- .-- .. -.- ..<span class="Apple-converted-space"> </span><br class="">Epoch 0 <=> Fundação: 1298244863 s ~ 2.408064*10^52 tP (tempos de Planck)<br class=""></div></div></blockquote></div><br class=""><br clear="all" class=""><div class=""><br class=""></div>--<span class="Apple-converted-space"> </span><br class=""><div class="gmail_signature">======================================<br class="">Alejandro Mesias André Nebra Perez<br class="">Java/Python/Js/Something else Developer<br class="">Twitter: @meszias<br class="">Linux User #442506<br class="">Campinas - SP - Brasil - South America<br class="">======================================</div></div><span style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">_______________________________________________</span><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><span style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">Lista do LHC <</span><a href="http://lhc.net.br/" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class="">http://lhc.net.br</a><span style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">></span><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><a href="mailto:HSC@listas.tia.mat.br" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class="">HSC@listas.tia.mat.br</a><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><a href="http://listas.tia.mat.br/listinfo.cgi/hsc-tia.mat.br" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class="">http://listas.tia.mat.br/listinfo.cgi/hsc-tia.mat.br</a></div></blockquote></div><br class=""></div></body></html>