Jakim cudem to działa?(tablica dyn.- prosze o wytlumaczenie)

0

Witam

#include <iostream>
#include <conio.h>
#include <new>
using namespace std;
int main()
{
    int *tab = new int[5];
    int i=0;
    tab[40] = 10;
    cout << tab[40];
    delete [] tab;
    
    getch();
}
    

Tworze tablice dynamiczna 5 elementową i wskazuje na element 40-sty i wyświetla zawartość...
Czy tablica dynamiczna nie powinna być uporządkowana od 0-4?
Przepraszam za moje pytanie jeśli się wydaje zbyt banalne ale nie daje mi to spać :P (dopiero sie ucze)
Dziekuje i pozdrawiam.

0

To co przedstawiles nazywa sie przekroczeniem zakresu tablicy, jest to mozliwe lecz czesto niebezpieczne bo odwolujemy sie do pamieci do ktorej nic nie powinnismy zapisywac, w podanym przykladzie tab[40] odwola sie do adresu pamieci odleglego od tab o 40*sizeof(int) bajtow...

0

Innymi slowy: czasami odczytasz jakieś "śmieci" a innym razem program Ci sie wykrzaczy.

0

głupie szczęście spowodowane tym, że masz prosty program.
Takie błędy potem powodują "segmentation fault" zwykle w zupełnie innej części programu (tej prawidłowej).

0

C++ to język w którym łatwo postrzelić się w stopę. Odkryłeś właśnie jeden ze sposobów.
Kompilator ci to przepuścił, ale nie należy tak nigdy robić - chyba że lubisz oglądać nieprawidłowe operacje, wyjątki, albo i bluescreeny przy odrobinie (braku) szczęścia.

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