Różnice

Różnice między wybraną wersją a wersją aktualną.

Odnośnik do tego porównania

Both sides previous revision Poprzednia wersja
Nowa wersja
Poprzednia wersja
pl:dydaktyka:jimp2:2017:labs:pamiec-i-pliki [2017/03/07 09:57]
kkutt [Ćwiczenia]
pl:dydaktyka:jimp2:2017:labs:pamiec-i-pliki [2019/06/27 15:50] (aktualna)
Linia 113: Linia 113:
  
 Niestety należy pamiętać o tym by zwolnić pamięć przydzieloną inaczej uzyskujemy wyciek pamięci i program w trakcie działania zaczyna zużywać coraz więcej pamięci operacyjnej mimo, że już jej i tak nigdy nie użyje! Sprawa też nie jest taka prosta, bo nie zawsze wiadomo, czy pewne elementy nie są już na pewno przez nikogo używane. Niestety należy pamiętać o tym by zwolnić pamięć przydzieloną inaczej uzyskujemy wyciek pamięci i program w trakcie działania zaczyna zużywać coraz więcej pamięci operacyjnej mimo, że już jej i tak nigdy nie użyje! Sprawa też nie jest taka prosta, bo nie zawsze wiadomo, czy pewne elementy nie są już na pewno przez nikogo używane.
 +
 +=== Brak wartości ===
 +
 +W C%%++%%11 nie używamy już makra **NULL** zostało dodane specjalne słowo kluczowe reprezentujące pusty wskaźnik **nullptr**
 +
 +<code cpp>
 +int *v = nullptr;
 +delete v;
 +</​code>​
 +
  
 =====Ale jest nadzieja - zautomatyzowane zarządzanie pamięcią część pierwsza===== =====Ale jest nadzieja - zautomatyzowane zarządzanie pamięcią część pierwsza=====
Linia 331: Linia 341:
   - [1 plus] W sekcji [[#​wskazniki_i_alokacja_pamieci|Wskaźniki i alokacja pamięci]] zostało powiedziane,​ że **nie można** utworzyć tablicy wielowymiarowej prostym poleceniem //int * *tab = new int[10][10]//​. Przeanalizuj rysunek poniżej i zastanów się dlaczego tak jest. Następnie napisz program który będzie pobierał od użytkownika wymiary tablicy i dynamicznie alokował pamięć dla niej. Napisz funkcję która będzie uzupełniała tablicę kolejnymi liczbami całkowitymi (tak jak na rysunku) i osobną funkcję do wyświetlania tablicy. Czy można do tego wykorzystać funkcje napisane na poprzednich laboratoriach nie modyfikując ich? Pamiętaj o **poprawnym** zwolnieniu pamięci! {{.:​pointers2pointers.png|Tablica wskaźników}}. Zadanie zostało podzielone na kroki: (step1,​step2,​...). Ukończenie pierwszego i drugiego kroku jest wymagane do zaliczenia ćwiczenia.   - [1 plus] W sekcji [[#​wskazniki_i_alokacja_pamieci|Wskaźniki i alokacja pamięci]] zostało powiedziane,​ że **nie można** utworzyć tablicy wielowymiarowej prostym poleceniem //int * *tab = new int[10][10]//​. Przeanalizuj rysunek poniżej i zastanów się dlaczego tak jest. Następnie napisz program który będzie pobierał od użytkownika wymiary tablicy i dynamicznie alokował pamięć dla niej. Napisz funkcję która będzie uzupełniała tablicę kolejnymi liczbami całkowitymi (tak jak na rysunku) i osobną funkcję do wyświetlania tablicy. Czy można do tego wykorzystać funkcje napisane na poprzednich laboratoriach nie modyfikując ich? Pamiętaj o **poprawnym** zwolnieniu pamięci! {{.:​pointers2pointers.png|Tablica wskaźników}}. Zadanie zostało podzielone na kroki: (step1,​step2,​...). Ukończenie pierwszego i drugiego kroku jest wymagane do zaliczenia ćwiczenia.
     * Moduł: **array2d**     * Moduł: **array2d**
-    * Pliki z implementacją:​ **Array2d.h/cpp**+    * Pliki z implementacją:​ **Array2D.h/cpp**
     * Sygnatura metody: <code cpp>int **Array2D(int n_rows, int n_columns);     * Sygnatura metody: <code cpp>int **Array2D(int n_rows, int n_columns);
 void DeleteArray2D(int **array, int n_rows, int n_columns);</​code>​ void DeleteArray2D(int **array, int n_rows, int n_columns);</​code>​
Linia 344: Linia 354:
   - [2 plusy] Wykorzystując strukturę danych (struct) znaną jeszcze z języka C, należy zaimplementować listę jednokierunkową zdolną przechowywać liczby całkowite w swoich węzłach. **UWAGA**: jest to ćwiczenie tylko techniczne, w standardowej bibliotece istnieje [[http://​en.cppreference.com/​w/​cpp/​container/​forward_list|forward_list]] zdolna przechowywać dowolny typ.   - [2 plusy] Wykorzystując strukturę danych (struct) znaną jeszcze z języka C, należy zaimplementować listę jednokierunkową zdolną przechowywać liczby całkowite w swoich węzłach. **UWAGA**: jest to ćwiczenie tylko techniczne, w standardowej bibliotece istnieje [[http://​en.cppreference.com/​w/​cpp/​container/​forward_list|forward_list]] zdolna przechowywać dowolny typ.
     * Moduł: **simpleforwardlist**     * Moduł: **simpleforwardlist**
-    * Pliki z implementacją:​ **ForwardList.h/cpp**+    * Pliki z implementacją:​ **SimpleForwardList.h/cpp**
     * Sygnatury metod: <code cpp>​ForwardList *CreateNode(int value);     * Sygnatury metod: <code cpp>​ForwardList *CreateNode(int value);
 void DestroyList(ForwardList *list);</​code>​ void DestroyList(ForwardList *list);</​code>​
pl/dydaktyka/jimp2/2017/labs/pamiec-i-pliki.1488877025.txt.gz · ostatnio zmienione: 2019/06/27 15:52 (edycja zewnętrzna)
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0