Śmieci z pamięci

0

Hej, napisałem sobie taki oto program. Ma on wypisywać elementy tablicy w odwrotnej kolejności.

    cout<<"Podaj wielkosc tablicy: ";
    int wielkoscTablicy=0;
	cin>>wielkoscTablicy;
    cout<<endl;

    char *tablica1=new char[wielkoscTablicy];
    cout<<"Miejsca na wpis do tablicy: "<<wielkoscTablicy<<endl<<endl;

    cout<<"Teraz wypelnij tablice!"<<endl;


    for(int i=0; i<(wielkoscTablicy); i++)
    {
        cin>>tablica1[i];
    }

	cout <<"To co siedzi w tablicy: " << tablica1 << endl;
    system("cls");

    cout<<"W tablicy jest nastepujcy ciag znakow:"<<endl;
    int j=0;

    while(tablica1[j]!='\0')
    {
        cout<<tablica1[j]<<" ";
        j++;
    }
    cout<<endl<<"Ilosc znakow wprowadzonych: "<<j<<endl;

    cout<<endl<<"Wyswietlenie ciagu znakow w odwrotnej kolejnosci:"<<endl;
     char *tablica2=new char[wielkoscTablicy];
     char *tablica3=new char[wielkoscTablicy];

     strcpy(tablica2,tablica1);
     //pracujemy na tablica2
     int a=0,b=0;
     for(a=0, b=wielkoscTablicy-1; a<wielkoscTablicy; a++,b-- )
     {
         tablica3[a]=tablica2[b];

     }

     cout<<"Tablica odwrotna 3: "<<tablica3<<endl; 

W CB działa on poprawnie, a w VS 2015 wyrzuca mi śmieci z pamięci.
Screen w załączniku. Ktoś wie jak to można naprawić?

2

tablica1 nie jest zakończona zerem, przez co "while (tablica1[j] != '\0')" tak naprawdę marze po pamięci, aż znajdzie zerowy bajt, podobnie strcpy. Akurat nie dostałem Access violation. Dodatkowo ten program to jeden wielki mem-leak.

No i po co kopiowanie tej tablicy 2 razy, skoro na oryginale można przeiterować od końca do początku i wyświetlić elementy odwrotnie.

3
  1. Formatowanie kodu: http://4programmers.net/Forum/998482
  2. Smrodek od inkrementacji i dekrementacji: http://4programmers.net/Forum/1101404
  3. tablica1[j]!='\0' czy wpisałeś tam to zero? Jak nie to skąd ma tam się wziąć?
  4. Masz wycieki pamięci są new[], brak delete[]
  5. Dla odwrócenia tablicy potrzebujesz maks dwóch tablic, ale da się to zrobić w miejscu czyli w tej samej jednej tablice.

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