Advertisement
Alan468

Alokacja pamięci

Jan 11th, 2016
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.88 KB | None | 0 0
  1. #include <stdio.h> // biblioteka podstawowa
  2. #include <malloc.h> // biblioteka alokacji pamięci
  3. #include <conio.h> // wiadomo .... _getch() i te sprawy
  4.  
  5. // glowna funkcja
  6. int main()
  7. {
  8. // -TWORZENIE ZMIENNYCH
  9.     printf("Tworzenie zmiennych\n\n");
  10.     int *iZmiannaDynamiczna; // zwykla zmienna dynamiczna
  11.     int *iTablica_1D_Dynamiczna; // tablica 1 wymiarowa
  12.     int **iTablica_2D_Dynamiczna; // tablica 2 wymiarowa
  13.  
  14.     // zmienna = (rzutowanie na typ zmiennej ze wskaznikiem) malloc( rozmiar typu zmiennej * ilosc)
  15.     // (typ *) - zwykla zmienna i tablica jedno wymiarowa
  16.     // (typ **) -tablica dwu wymiarowa
  17.  
  18. // -ALOKACJA
  19.     printf("Alokacja pamieci zmiennych\n\n");
  20.  
  21.     // alokacja pamieci dla zwyklej zmiennej
  22.     iZmiannaDynamiczna = (int *)malloc(sizeof(iZmiannaDynamiczna) * 1);
  23.  
  24.     // alokacja pamieci dla zmiennej tablicowej jedno wymiarowej o wymiarze [10]
  25.     iTablica_1D_Dynamiczna = (int *)malloc(sizeof(iTablica_1D_Dynamiczna) * 10);
  26.  
  27.     // alokacja pamieci dla zmiennej tablicowej dwu wymiarowej o wymiarach [10][2]
  28.     iTablica_2D_Dynamiczna = (int **)malloc(sizeof(iTablica_2D_Dynamiczna) * 10);
  29.     for (int i = 0; i < 10; i++) {
  30.         iTablica_2D_Dynamiczna[i] = (int *)malloc(sizeof(iTablica_2D_Dynamiczna[0]) * 2);
  31.     }
  32.  
  33. // -PRZYPISYWANIE
  34.     printf("Przypisywanie wartosci do zmiennych\n\n");
  35.  
  36.     *iZmiannaDynamiczna = 5; // przypisanie liczby do zmiennej
  37.  
  38.     // przypisywanie wartosci do zmiennej tablicowej []
  39.     for (int i = 0; i < 10; i++) {
  40.         iTablica_1D_Dynamiczna[i] = i; // dowolna wartosc
  41.     }
  42.  
  43.     // przypisywanie wartosci do zmiennej tablicowej [][]
  44.     for (int i = 0; i < 10; i++) {
  45.         for (int j = 0; j < 2; j++) {
  46.             iTablica_2D_Dynamiczna[i][j] = i*j;// dowolna wartosc
  47.         }
  48.     }
  49.  
  50. // -WYSWIETLANIE
  51.     printf("Wyswietlanie zmiennych\n\n");
  52.  
  53.     printf("\tZmienna dynamiczna: %d\n\n" ,*iZmiannaDynamiczna); // wyswietlanie liczby do zmiennej
  54.    
  55.     printf("Wyswietlanie zmiennych tablicowych jedno wymiarowych\n\n");
  56.     // wyswietlanie wartosci do zmiennej tablicowej []
  57.     for (int i = 0; i < 10; i++) {
  58.         printf("\tZmienna tablicowa 1 wymiarowa dynamiczna: %d\n", iTablica_1D_Dynamiczna[i]); // dowolna wartosc
  59.     }
  60.     printf("\n");
  61.  
  62.     printf("Wyswietlanie zmiennych tablicowych dwi wymiarowych\n\n");
  63.     // wyswietlanie wartosci do zmiennej tablicowej [][]
  64.     for (int i = 0; i < 10; i++) {
  65.         for (int j = 0; j < 2; j++) {
  66.             printf("\tZmienna tablicowa 2 wymiarowa dynamiczna: %d\n", iTablica_2D_Dynamiczna[i][j]);// dowolna wartosc
  67.         }
  68.     }
  69.     printf("\n");
  70.  
  71. // -ZWALNIANIE PAMIECI
  72.     printf("Zwalnianie pamieci zmiennych\n\n");
  73.     free(iZmiannaDynamiczna); // zwalnianie pamieci zmiennej
  74.  
  75.     // zwalnianie pamieci zmiennej tablicowej []
  76.     free(iTablica_1D_Dynamiczna);
  77.  
  78.     //zwalnianie pamieci zmiennej tablicowej [][]
  79.     for (int i = 0; i < 10; i++) {
  80.         free(iTablica_2D_Dynamiczna[i]); // najpierw drugi wymiar
  81.     }
  82.     free(iTablica_2D_Dynamiczna); // potem calej tablicy
  83.  
  84.     printf("Koniec\n\n");
  85.     _getch();
  86.     return 0;
  87. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement