C++ tablica dynamiczna - invalid pointer operation

0

W moim programie uzytkownik podaje wiersz i kolumnę, które to wartości mają stworzyć dynamiczną tablicę. wszystko ładnie pieknie niby działa ale przy zamykaniu wyskakuje błąd :

raised exception class ElnvalidPointer with message 'invalid pointer operation' Process stopped.

coś złego dzieje się ze wskaźnikiem, ale gdzie szukać błędu, może coś źle zadeklarowałem... pomóżcie bo mi już się skończyły pomysły.

#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;

int wiersz, kolumny, naklad, max, temp, wynik;           //deklaracja zmiennych globalnych

int **tablica = new int *[wiersz+1];     //deklaracja tablicy
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::OKClick(TObject *Sender)
{
wiersz = StrToInt(Form1->Edit1->Text);
kolumny = StrToInt(Form1->Edit2->Text);
Form1->Memo1->Lines->Add("Podana ilosc wierszy: "+ IntToStr(wiersz)+" Podana ilosc kolumn: "+IntToStr(kolumny));
Form1->Memo1->Lines->Add("Tworzymy tablice o wymiarach: "+IntToStr(wiersz)+ " x " +IntToStr(kolumny));

   **  for (int i=0; i<=wiersz+1; i++)           
       {tablica[i] = new int[kolumny+1];}     
}

0

Zaczekaj no. Tworzysz dynamiczną tablicę w globalu, ale wielkość jej wczytujesz dopiero w evencie? No pięknie..

0
xeo545x39 napisał(a):

Zaczekaj no. Tworzysz dynamiczną tablicę w globalu, ale wielkość jej wczytujesz dopiero w evencie? No pięknie..

wydaje mi sie ze działa.. tablica musi byc w globalu bo chce odwolywac sie do niej w roznych eventach, nie wiem jak to zrobic inaczej

0

No to tylko zadeklaruj globalnie, definiujesz w metodzie.

#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
 
int wiersz, kolumny, naklad, max, temp, wynik;           //deklaracja zmiennych globalnych
 
int **tablica;     //deklaracja tablicy
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::OKClick(TObject *Sender)
{
wiersz = StrToInt(Form1->Edit1->Text);
kolumny = StrToInt(Form1->Edit2->Text);
Form1->Memo1->Lines->Add("Podana ilosc wierszy: "+ IntToStr(wiersz)+" Podana ilosc kolumn: "+IntToStr(kolumny));
Form1->Memo1->Lines->Add("Tworzymy tablice o wymiarach: "+IntToStr(wiersz)+ " x " +IntToStr(kolumny));
 
    tablica = new int *[wiersz+1];

   //**  co robią wgl te gwiazdki tutaj?
       for (int i=0; i<=wiersz+1; i++)           
       {tablica[i] = new int[kolumny+1];}     
}
 

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