Jak już wspomniałem, to ma coś wspólnego ze stosem

Słówko
static sprawia, że tablica będzie traktowana jak globalna (w sensie zapisu w pamięci), a na zmienne globalne nie ma ograniczeń tzn. można poza
main() zadeklarować sporą tablicę:
to dopiero rozkminka co
W google wpisz
c++ static 'stack frame'
Kiedy wywoływana jest funkcja, wówczas przenoszona jest ona do obszaru pamięci 'ramka stosu' (?) gdzie ma się pomieścić adres funkcji, wskaźnik na wywołującą funkcję (rodzica) i lokalne zmienne. Jeśli deklarujesz zwykłą tablicę to jej rozmiar zapycha przydzieloną dla funkcji pamięć. Jeśli użyjesz wskaźnika, to zamiast ogromnej tablicy będzie malutki, kilku bajtowy adres. Natomiast słówko static ozn. istnienie tylko jednego egzemplarza tej tablicy w całym programie, więc pewnie też jest używany tylko adres.