Tablice dynamiczne - co gdy brak delete, zerowanie, kopiowanie

0

Witam
Mam pytanie dotyczące tablicy dynamicznej.

  1. int *tab1 = new int[rozmiar]; Co jeżeli nie usunę danych z pamięci za pomocą delete?
  2. Można skopiować wartości jednej tablicy dynamicznej do drugiej w jakiś bardziej efektowny sposób niż pętla (np. for) i iteracja po każdym elemencie tablicy?
  3. W jaki sposób można wyzerować (lub chyba też wynNULLować) całą tablicę w szybszy sposób niż for(...) tab[i] = 0;? Bo typy int przy deklaracji przyjmują ciężkie do przewidzenia wartości.
  4. Jaką wartość początkową będzie miał każdy z elementów tablicy bool?
    Pozdrawiam
2
  1. To pamięć jest zaalokowana przez twój program aż się nie zakończy.
  2. memcpy
  3. memset
  4. losową, co więcej bardzo losową :D bo bool ma 1 bajt więc losowa "wartość" może być w zakresie 0-255
1
memset(tab,0,size*sizeof(int));
0

To jak już nazwałem temat "tablice dynamiczne ...", to jak wysłać taką tablicę do funkcji:

 int **tab_x = new int *[5];
    for ( int i = 0; i < 5; ++i )
        tab_x[i] = new int [size];

Przy tablicy jednowymiarowej starczyło: void funkcja1(int tab1[])

2
void funkcja1(int **tab,unsigned Height,unsigned Width)
0

Zapytałem się (bo tak się domyślam), czy Height i Width są potrzebne, np. do iteracji w pętlach for. Czy gdyby funkcja potrzebowała tylko int **tab, to wypisanie stałych elementów (które znam, np. [1][2] - wiem, że tam coś jest) działałoby. W związku z tym, iż jest to wskaźnik (a nawet dokładniej tablica wskaźników na tablicę, tak?) funkcja dokonywałaby edycji "na oryginalnej tablicy" skąd wywoływana jest funkcja? Bo, gdy prześlę int'a jako argument, tworzy się w funkcji nowa zmienna, tak? Ale, gdybym przesłał już wskaźnik, to tworzy się tam tylko nowy wskaźnik wskazujący na miejsce, gdzie jest dana zmienna/obiekt, a więc dojdzie do edycji "globalnej", tak?

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