Narzędzia użytkownika

Narzędzia witryny


wlasne_funkcje_obslugi_braku_pamieci

Różnice

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

Odnośnik do tego porównania

Last revision Both sides next revision
wlasne_funkcje_obslugi_braku_pamieci [2008/12/03 22:24]
marcinkaczor utworzono
wlasne_funkcje_obslugi_braku_pamieci [2008/12/03 22:32]
marcinkaczor formatowanie
Linia 1: Linia 1:
-/*! +=== Własne funkcje obsługi braku pamięci === 
- * Autor: ​Marcin Kaczor U3ISI nr albumu: 192641 + 
- * Temat: Obsluga braku pamieci (praca domowa na ZPR) +==Marcin Kaczor U3ISI nr albumu: 192641 ​== 
- * + 
- Problem: Podczas korzystania z dynamicznego przydzialu pamieci w jezyku C++ +Problem: Podczas korzystania z dynamicznego przydzialu pamieci w jezyku C++ (za pomoca operatora new) jesli nie uda sie zarezerwowac bloku pamieci o odpowiednim rozmiarze, to zostanie rzucony wyjatek std::​bad_alloc. Sprawdzanie czy po każdym wywolaniu new nie zostal rzucony wyjatek jest klopotliwe. Oczywiscie mozna uzywac wersji operatora new, ktora nie rzuca wyjatkiem new (std::​nothrow) Typ, ale wtedy pomijamy obsługę błędów. 
- ​* ​(za pomoca operatora new) jesli nie uda sie zarezerwowac bloku pamieci + 
- ​* ​o odpowiednim rozmiarze, to zostanie rzucony wyjatek std::​bad_alloc. +Opis: Bilbioteka standardowa udostepnia mozliwosc zdefiniowania wlasnej funkcji 
- ​* ​Sprawdzanie czy po każdym wywolaniu new nie zostal rzucony wyjatek jest +obslugi braku pamieci za pomoca funkcji z biblioteki standardowej set_new_handler(). 
- ​* ​klopotliwe. Oczywiscie mozna uzywac wersji operatora new, ktora nie rzuca +Funkcja obslugi braku pamieci powinna uzyskac wiecej pamieci, rzucic wyjatek, 
- ​* ​wyjatkiem new (std::​nothrow) Typ, ale wtedy pomijamy obsługę błędów. +przerwac program lub chociaz ustawic inna funkcje obslugi (lub odinstalowac 
- * +obecna), bo program bedzie sie wykonywal w nieskonczonej petli. 
- Opis: Bilbioteka standardowa udostepnia mozliwosc zdefiniowania wlasnej funkcji + 
- obslugi braku pamieci za pomoca funkcji z biblioteki standardowej set_new_handler(). +Zastosowanie:​ Glownym zadaniem funkcji obslugi braku pamieci jest uzyskanie  
- Funkcja obslugi braku pamieci powinna uzyskac wiecej pamieci, rzucic wyjatek, +wiekszej ilosci pamieci (np. przez usuniecie nieuzywanych obiektow) tak aby 
- przerwac program lub chociaz ustawic inna funkcje obslugi (lub odinstalowac +aplikacja mogla dzialac dalej, czasami jest to niemozliwe, funkcja ta jest tez 
- obecna), bo program bedzie sie wykonywal w nieskonczonej petli. +przydatna gdy nie chcemy przy kazdym tworzeniu nowego obiektu obslugiwac 
- * +wyjatku bad_alloc, w ten sposob, gdy juz wystapi problem braku pamieci mozemy 
- Zastosowanie:​ Glownym zadaniem funkcji obslugi braku pamieci jest uzyskanie  +to obsluzyc w jednym miejscu i zamknac aplikacje w mniej brutalny sposob, mamy 
- wiekszej ilosci pamieci (np. przez usuniecie nieuzywanych obiektow) tak aby +szanse na pozamykanie polaczen, plikow oraz poinformowanie uzytkownika o tym co 
- aplikacja mogla dzialac dalej, czasami jest to niemozliwe, funkcja ta jest tez +sie stalo. 
- przydatna gdy nie chcemy przy kazdym tworzeniu nowego obiektu obslugiwac + 
- wyjatku bad_alloc, w ten sposob, gdy juz wystapi problem braku pamieci mozemy +Przyklad: Nizej zostanie przedstawiony przyklad klasy reprezentujacej obiekty 
- to obsluzyc w jednym miejscu i zamknac aplikacje w mniej brutalny sposob, mamy +zajmujace duzo pamieci, obiekty beda rejestrowane w rejstrze przez ktory tez 
- szanse na pozamykanie polaczen, plikow oraz poinformowanie uzytkownika o tym co +jest mozliwy do nich dostep, rejestr bedzie usuwac obiekty gdy bedzie 
- sie stalo. +potrzebna pamiec.
-  +
- Przyklad: Nizej zostanie przedstawiony przyklad klasy reprezentujacej obiekty +
- zajmujace duzo pamieci, obiekty beda rejestrowane w rejstrze przez ktory tez +
- jest mozliwy do nich dostep, rejestr bedzie usuwac obiekty gdy bedzie +
- potrzebna pamiec. +
- */+
  
 +<code c++>
 #include <​new> ​              // zawiera funkcje set_new_handler #include <​new> ​              // zawiera funkcje set_new_handler
 #include <​iostream> ​         // obiekty cout, cerr, etc. #include <​iostream> ​         // obiekty cout, cerr, etc.
Linia 164: Linia 159:
   return 0;   return 0;
 } }
 +</​code>​
wlasne_funkcje_obslugi_braku_pamieci.txt · ostatnio zmienione: 2008/12/03 22:54 przez marcinkaczor