delete[] tablica; "Element wskazniki.exe wyzwolił punkt przerwania"
Ostatnio zmodyfikowano 2017-08-15 22:01
GorveenN Temat założony przez niniejszego użytkownika |
delete[] tablica; "Element wskazniki.exe wyzwolił punkt przerwania" » 2017-08-15 21:51:13 Cześć, pisząc kod napotkałem się z błędem podanym w tytule. Tutaj mój kod: Problem pojawia się przy linijce: delete[] tablica; #include <iostream> using namespace std;
int ile;
int main() { cout << "Ile liczb w tablicy: "; cin >> ile; int * tablica; tablica = new int[ ile ]; for( int i = 0; i < ile; i++ ) { cout <<( int ) tablica << endl; tablica++; } delete[] tablica; return 0; }
Jakieś pomysły co robię źle? Piszę w VS community 2017. |
|
michal11 |
» 2017-08-15 22:01:41 tablica++; zmienia oryginalny wskaźnik wiec do delete przekazywany jest inny wskaźnik niż ten uzyskany z new. A ponieważ przechodzisz po wszystkich elementach tablicy wiec po wyjściu z pętli wskaźnik tablica wskazuje na adres zaraz za całym blokiem który dostałeś z new, wiec delete próbuje zwolnic pamięć którą prawdopodobnie nie należy do tego procesu. |
|
« 1 » |