Witam,
Za pomoca ponizszego programuj stworzyłem tablice dynamiczna, nastepnie wyświetlam ja oraz chce ja usunac a potem upewnic sie czy aby na pewno zostala usunieta.
Na poczatek pytanie: Czy jestli usuwam ta tablice w taki sposob : delete[] (oraz ustawiam NULL na jej poczatek ( trzeba tak ?) ) to ja niszcze tylko wskazniki do jej poczatku czy tez ogolnie wartosci tej tablicy ?
Bo wg mojego programu, napisanego zreszta chyba dobrze dane tablicy caly czas zostaja w pamieci operacyjnej. A chyba nie powinny, co ? Jesli sie myle to niech mnie ktos poprawi.
A doszedlem do tego wniasku za pomoca dodatkowego wskanika 'wsk' ktory na poczatku zostal przypisany do mojej tablicy i juz po jej 'usunieciu' przeszukuje forem pamiec a tam niespodzianka - moja stara usunieta tablica jest tam nadal (no poza poczatkowym elementem ktory zostal ustawiony an NULL).
Ogolnie rozchodzi sie o to czy ta liczby po usunieciu tabicy nadal tam sa i usuniete jest tylko wskazanie do poczatku obszaru od ktorego sie zaczynaja czy tez nie powinny byc one wykasowane oraz obszar ten powinien zawierac .. wlasnie - co powinien zawierac, NULL ?
Mam nadzieje ze wystarczajaco jasno sie rozpisalem. Dziekuje z gory za zainteresowanie ;-)
#include <iostream>
#include <conio.h>
#include <cstdlib>
#include <ctime>
#include <new>
using namespace std;
int main()
{
srand (static_cast<unsigned>(time(NULL)));
// tworz
int *tab;
tab = new int[10];
if (tab == NULL)
cout << "Niestety, zabraklo pamieci!";
// ustaw
for(int i = 0; i < 10 ; i++)
tab[i] =rand();
int *wsk = tab;
// pokaz
for(int i = 0; i < 10 ; i++)
cout << "tab["<<i<<"] = " << tab[i]<<"\n";
// usun
delete[] tab;
tab = NULL;
// pokaz
cout << "Po usunieciu: \n";
if(tab == NULL) cout << "Nic tu nie ma\n";
else
{
for(int i = 0; i < 10 ; i++)
cout << "tab["<<i<<"] = " << tab[i]<<"\n";
}
//cout<<"pokaz wsk = " << *wsk;
for(int i = 0; i < 10 ; i++)
cout << "tab["<<i<<"] = " << *(wsk + i)<<"\n";
getch();
return 0;
}