Tak się zastanawiałem czemu nie powstał taki język gdzie przydzielanie pamięci danej zmiennej/obiektowi robi się bardziej "inteligetniej". Zapewne mam za małą wiedzę dotyczącą jak działa komputer (a raczej przydzielanie pamięci dla niego)
Chodzi o to że np. int zajmuję 4 bajty. A często jest on używany do małych liczb. Takie liczby które spokojnie się zmieszczą na np 6 bitach. Czasami mamy jakieś stałe liczby które są małe. A jakby definicje z jednej prostej zamienić na taką
Stable int variable = 5;
Stable[4] int variable;
nStable int variable;
kompilator widząc stable oblicza ile potrzebne będzie bitów (w tym przypadku 3) i tylko tyle rezerwuje dla tej zmiennej pamięci.
widząc Stable[4] rezerwuje 4 bity
natomiast jak widzi nStable to przydziela standartowo 4 bajty
myślałem także że gdy nStable to może dynamicznie powiększać rozmiar miejsca zarezerwowanego (zaczynawszy od 1 bajta). Gdy sprawdzi że się liczba nie zmieści to wtedy zwiększa mu przydzieloną pamięć. Gorzej byłoby z tym gdyby wpisywanie odbywało się dynamicznie. Ale sądzę, że jest też na to jakiś sposób.
Nie wiem czy programy działały by szybciej, na pewno zajmowały by mniej miejsca w pamięci. Na logikę działały by szybciej, ale zapewne jest jakiś optymalizator który skacze po bajtach a nie po bitach (zbiera dane jak sieć rybacka).
Mógłby mi ktoś rozjaśnić sytuację tego?