Tablica oraz new i delete.

0

mam np taki kod:

 
int *c;
while(cośtam != czegośtam)
{
        c = new int[1];
        // tutaj jakieś przekształcenia c

}
// jak teraz moge posługiwać się c ? tzn jak odczytać wszystkie elementy w tej tablicy
// bo normalnie przykładowo robi sie to tak :
for(int i = 0; i < 10; i++)
    cout << c[i]; // tutaj akurat wyświetlanie.
0

ja nie rozumiem ;p

Dokładnie tak, jak napisałeś ;p

int p = c[3];
c[2] = 77;
0

W tej pętli

 
while(cośtam != czegośtam)
{
        c = new int[1];
        // tutaj jakieś przekształcenia c
 
}

to ty ciągle wskaźnikowi c przypisujesz adres, gdzie zarezerwowałeś obszar pamięci na tablicę z 1 intem. Więc tablica dynamiczna ma rozmiar 1 i nic się nie zmienia. Prócz tego że masz wyciek pamięci, bo nie zwalniasz tamtych innych obszarów, które zarezerwowałeś, a teraz już nie wiesz gdzie są (żaden wskaźnik ci tego nie pokazuje już).

Rozwiązaniem może być, albo wcześniejsze przeliczenie przed pętlą ile będziesz potrzebował miejsca w pamięci i rezerwacja odpowiednio dużej tablicy, potem tylko odwołujesz do kolejnych elementów tablicy. Możesz też skorzystać, co moim zdaniem będzie najprostsze, z klasy vector z STL'a. Możesz o tym poczytać tu

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