Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

delete[] tablica; "Element wskazniki.exe wyzwolił punkt przerwania"

Ostatnio zmodyfikowano 2017-08-15 22:01
Autor Wiadomość
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;
C/C++
#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.
P-164004
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.
P-164007
« 1 »
  Strona 1 z 1