Usuwanie tablicy dynamicznej.

Odpowiedz Nowy wątek
2015-03-24 19:01
BlackOfSeal
0

Witam. Otóż natknąłem na pewien problem. Podczas usuwania tablicy dynamicznej zostaje zastąpiony tylko pierwszy element tablicy liczbą 0. Mógłby mi ktoś powiedzieć czy to jest normalne czy może nie? I jak zrobić żeby usunęło całą tablicę a nie tylko jeden element.

#include <iostream>

using namespace std;
#define SIZE 5

void wypiszTablice(int tab[], int rozmiar);
int *stworzTablice(int elements[], int rozmiar);
void usunTablice(int tab[]);

int main()
{
    int arr[SIZE] {1,2,3,4,5};
    int *sTablice = stworzTablice(arr, SIZE);

    wypiszTablice(sTablice, SIZE);

    usunTablice(sTablice);

    wypiszTablice(sTablice, SIZE);

    return 0;
}

void wypiszTablice(int tab[], int rozmiar)
{
    for(int i = 0; i < rozmiar; i++)
    {
        cout << "tab[" << i << "] = " << tab[i] << "\n";
    }
}

void usunTablice(int tab[])
{
    delete[] tab;
}

int *stworzTablice(int elements[], int rozmiar)
{
    int *tab = new int[rozmiar];

    for(int i = 0; i < rozmiar; i++)
    {
        tab[i] = elements[i];
    }

    return tab;
}

Pozostało 580 znaków

2015-03-24 19:04
2

Absoloutnie nie masz nic do gadania apropos tego co się dzieje z tablicą po jej zwolnieniu, bo to nie twój zasób.

Pozostało 580 znaków

2015-03-24 19:21
2

Po zwolnieniu tablicy odwoływanie się do niej - może nawet doprowadzić do zawieszenia/usunięcia programu przez system - przynajmniej w teorii - po zwolnieniu to nie jest już Twoja pamięć i może tam być wszystko - w zależności od potrzeb i konstrukcji systemu.


Ogólnie na prace domowe mam stawki zaporowe. Czasem coś o programowaniu znajdzie się na mojej stronie

Pozostało 580 znaków

2015-03-24 19:22
4

Hej,
usuwanie całej tablicy byłoby bardzo nieefektywne- zerowanie wszystkich bitów w dużych tablicach zajmowałoby masę czasu- kompletnie zbędnie!
Zamiast tego zaznacza się jedynie, iż obszar który wcześniej był zajęty (np następne 20 bajtów) od tej pory jest wolny i czeka się na jego nadpisanie :)

Podobnie masz na kompie, stąd czasem można odzyskać skasowane pliki jeżeli nikt ich jeszcze nie nadpisał. (Tak w uproszczeniu)

Pozostało 580 znaków

2015-03-24 19:40
1

@Piwniczne Często tak się dzieje, ale to nie jest standard, zależy to od systemu operacyjnego i jego potrzeb oraz użytego alokatora wykorzystanego w bibliotece standardowej danego kompilatora. Tak samo jest z odzyskiwaniem plików, zależy od filesystemu, są takie, gdzie nie odzyskasz (np przy niektórych partycjach szyfrowanych - względy bezpieczeństwa) :)


Ogólnie na prace domowe mam stawki zaporowe. Czasem coś o programowaniu znajdzie się na mojej stronie

Pozostało 580 znaków

2015-03-24 20:24
BlackOfSeal
0

Dzięki za odpowiedzi :) Myślałem że jak usunę tablicę to wszystkie elementy znikną i wartości będą wynosić 0.

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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