witam, mam dziwny problem z dynamicznym alokowaniem tablicy
otóż mam program w MFC, mam globalnie zadeklarowany wskaźnik na tablicę obiektów klasy "towary"
2 funkcje tego programu polegają na dodaniu i usunięciu elementu z tablicy
Oto one:
towary *b = new towary[indeks];
for (int i=0; i<indeks;i++)
{
b[i] = x[i];
}
delete[] x;
towary *x = new towary[indeks+1];
for (int i=0; i<indeks; i++)
{
x[i]=b[i];
}
delete []b;
dodanie
oraz
towary *b = new towary[indeks-1];
for (int i=0; i<asd; i++)
{
b[i] = x[i];
}
for (int i=asd; i<indeks-1; i++)
{
b[i] = x[i+1];
}
delete[] x;
towary *x = new towary[indeks-1];
for (int i=0; i<indeks-1; i++)
{
x[i]=b[i];
}
delete[] b;
indeks--;
refreshlisty();
usunięcie (asd jest to numer elementu którego należy skasować, indeks to jest aktualna wielkość tablicy, a operator= jest przeciążony, aby kopiować wszystkie parametry)
problem wygląda tak, że mimo, że te 2 funkcje są identyczne, przy
delete[] x;
funkcja dodająca działa, a w funkcji usuwającej element wywala mi błąd, po czym przekierowuje mnie do pliku dbgheap.c, linijka zamykająca "WINHEAP"
Windows has triggered a breakpoint in projekt.exe.
This may be due to a corruption of the heap, which indicates a bug in projekt.exe or any of the DLLs it has loaded.
This may also be due to the user pressing F12 while projekt.exe has focus.
The output window may have more diagnostic information.
Czy widać tu jakiś błąd? Z góry dzięki za odpowiedź.
EDIT// zapomniałem dodać, że tym wskaźnikiem który zadeklarowałem jest x
Wyciąg z debuga - HEAP[projekt.exe]: Heap block at 00A81C08 modified at 00A81C78 past requested size of 68