Stránka 1 z 1

Automaticke zvetsovani pole

Napsal: 25 kvě 2023, 14:12
od Diego
Ahoj vsem,
Jde v arduinu nejak udelat aby se mi automaticky behem behu programu rozsirovalo 2D pole dle potreby?
Mam jeden rozmer pevne dany a potrebuju aby se druhy rozsiroval podle vyuziti v ramci RAM.
Jde to nejak?
Dik

Re: Automaticke zvetsovani pole

Napsal: 25 kvě 2023, 14:17
od ondraN
Použij normální příkazy CPP pro dynamické alokování-uvolnění paměti
https://cplusplus.com/doc/tutorial/dynamic/
Jinak to bohužel nejde.

Re: Automaticke zvetsovani pole

Napsal: 25 kvě 2023, 14:43
od Caster
Šel bych na to přes malloc, calloc, realloc viz doporučení Arduino Memory Guide.

Např.

Changing size from 100 bytes to 1000 bytes using realloc.

Kód: Vybrat vše

char *ptr; ptr = malloc(100); ptr = realloc(ptr,1000);

Re: Automaticke zvetsovani pole

Napsal: 25 kvě 2023, 16:28
od Diego
Diky, asi bude nejjednodussi nastavit rovnou max velikost a pak to neresit ;)

Re: Automaticke zvetsovani pole

Napsal: 28 kvě 2023, 22:13
od gilhad
Pokud je to možné, tak určitě.

Na Arduinu ti stejně poběží jen jeden program naráz, takže ušetřená paměť prostě leží ladem. A bez dynamického realokování to bude i jednodušší.

Nic proti optimalizacím a efektivitě, ale dokud paměť stačí, tak je přehlednost programu důležitější. A když stačit přestane, tak se dá levně a bezpečně ještě ušetřit pomocí F-stringů - Serial.println(F("Something"));

A teprve pak má cenu začít používat nějaké složitější techniky.