W C++ możesz odczytywać dowolne miejsce w pamięci o np tak:
cout<<dec; // zamiana na liczb na system heksadecymalny
for(int i=0; i<500; i++) cout<<i+1<<" "<<tab[i]<<endl; // bazujac na tablicy
Pokażą się wartości, które są poza rozmiarem tablicy w komórkach pamięci obok. Tak właściwie nie do końca w komórkach pamięci obok, bo przeznaczanie 1 bajta na typ bool to marnotrawstwo miejsca...
W tych komórkach możesz zapisać informacje, ale jest to niebezpieczne. Bo po pierwsze czasami może być w nich jakaś wartość (ale nie musi), a po drugie program może zostać zawieszony za zapisywanie w obszarze pamięci wykorzystywanym przez inny program (albo inaczej mówiąc w obszarze o niedozwolonym dostępie ).
W tej powyższej pętli możesz zobaczyć jaki nadać n, by program się zawiesił. Wystarczy spojrzeć tam gdzie "komórka" pamięci będzie miała jakąś wartość np u mnie lokalnie:
409 104
Teraz wystarczy podać i+1, czyli u mnie 409. Prawdopodobnie jest ona wykorzystywana przez inny program i w konsoli wyskoczy Ci błąd. Jeżeli nie to wybierz jakąś inną wartość.
Takie coś jest niebezpieczne więc w kodzie staraj się zawsze takich luk w systemie alokowania pamięci unikać.