rozmiar tablicy

0

Cześć, zastanawia mnie jedna rzecz.
Mając tablicę

 int c[2] 

Mogę zrobić takie coś:

c[5]= 5; 

i moje pytanie; to działa tak, że deklarując tablice np tab[5] kompilator dostaje tylko wskaźnik na pierwszy element i ilość nietykalnych bajtów(w sensie nie przydzieli tej pamieci innej zmiennej)? w tym wypadku 20 bajtów?
czy w ógle nie wie gdzie kończy się tablica?

0

Nie wie, generalnie jest to naruszenie nieswojej pamięci, nadpisujesz czesc pamieic, ktora nie nalezy do Ciebie.

0

Kompilator wie bo możesz dać:
sizeof(c) - rozmiar tablicy w bajtach (2*4=8 dla 32 bitowych kompilaotrów)
lub:
sizeof(c)/sizeof(*c) - rozmiar tablicy w sztukach tych int'ów (2 - niezależnie od kompilatora)
ale kompilator nigdy nie sprawdza czy wyszedłeś poza zakres,
łudząc się że programista ma inteligencje.

0

dzięki za szybkie rozwianie wątpliwość, teraz będę mógł spać :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1