Tablica wskaźników do przechowywania obiektów

0

Witam,
jestem w trakcie pisania prostej bazy danych, które chce przechowywać w tablicy wskaźników

mojtyp * tab[1000];

tworzę tam kilkanaście obiektów

x=0;
while(x<100)
{
tab[x]=new moityp;
x++;}

i potem je kasuje(np obiekt 5)

z=5;
delete tab[z-1];
while(z<x)
{
tab[z-1]=tab[z];z++;
}

Pytanie czy nie następuję tu żaden wyciek pamięci ?
Sądzę że nie bo nie tracę wsk do żadnego z utworzonych obiektów : lecz wolałbym się upewnić.

Czy tablica wskaźników do obiektów zamiast vector czy też list jest dobrym wyjściem ?

0

Ja pewnego dnia doszedłem do wniosku - Ty kiedyś też dojdziesz - że używanie new dla alokacji bufora nie ma sensu, skoro masz std::vector - czyli nic innego jak właśnie dynamiczny bufor, czyli to co napisałeś :> + różne udogodnienia :> sam się zwalnia w destruktorze, erase() przesuwa pozostałe obiekty, itd. sama wygoda :>

mojtyp* tablica = new mojtyp[X];
tablica[0] = 352364236;
delete[] tablica;

Logicznie jest w sumie równoważne z:

std::vector<mojtyp> tablica;
tablica.resize(X);
tablica[0] = 5235236;
0

na moje oko nie występuje. Kasujesz to na co pokazuje(wskaźnik) 5 element tablicy wskaźników następnie iterujesz od 5 do 98 elementów tablicy wskaźników i przypisujesz każdemu adres elementu znajdującego się o 1 dalej(chodzi mi o adres jako element tablicy a nie adres wskaźnika). Jeśli będziesz modyfikował tablicę za czasu jej życia to zawsze lepiej zdefiniować obiekt jakiegoś kontenera. W tym przypadku była by dobra lista, ponieważ spodziewam się ,że będziesz kasował elementy z jej środka co odbywa się szybciej niż we vectorze.

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