Usuwanie tablicy z pamięci

0

Witam,
mam takie zadanie (do testów), w którym muszę tworzę tablice z elementami od 0 do x-1 (x - podana wartość na przez użytkownika), wyświetlam od końca i usuwam tablicę z pamięci. Mam problem z usuwaniem tablicy.

Od razu mówię że tablica ma być o stałym rozmiarze oraz mogę używać tylko biblioteki cstdio oraz funkcji fscanfi fprintf.

Piszę z głowy więc mogą być małe błędy, ale chodzi o linijkę delete [] ptr;

#include <cstdio>
int main()
{
  int x;
  fscanf(stdin, "%d", &x);

  int tab[x];
  int *ptr = tab;
  for(int i=0;i<x;i++)  // dodawanie
  {
    *ptr++ = i+1;
  }
  for(int i=0;i<x;i++)  // wyświetlanie i usuwanie
  {
    fprintf(stdout, "%d ", *(--ptr));
    delete [] ptr;
  }  
}

Potrzebuję usunąć całą tablicę z pamięci, a po tym co wykonałem nic nie usuwa...
Bardzo proszę o pomoc.

0

Operator delete służy do zwolnienia pamięci z sterty, a tu nie alokujesz pamięci na stercie, po drugie po co używasz tego:

int tab[x];
  int *ptr = tab;

możesz bezpośrednio wykorzystać nazwę tablicy jako wskaźnik do niej.

A tak w ogóle używasz delete, mimo że wcześniej nie użyłeś operatora new.
Moim zdaniem jak już powinno wyglądać to tak:

#include <cstdio>
int main()
{
  int x;
  fscanf(stdin, "%d", &x);
 
  int *tab = new int[x];
  for(int i=0;i<x;i++)  // dodawanie
  {
    tab[i] = i+1;
  }
  for(int i=x-1;i>-1;i--)  // wyświetlanie i usuwanie
  {
    fprintf(stdout, "%d ", tab[i]);
  }  
  delete []tab;
}

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