• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

C++ wyjątki - problem

Object Storage Arubacloud
0 głosów
214 wizyt
pytanie zadane 25 stycznia 2023 w C i C++ przez benny13 Obywatel (1,150 p.)

Cześć mam do napisania następujący program:

Napisz program, który przetestuje jak dużo pamięci można zaalokować dynamicznie,  zanim wyrzucony zostanie wyjątek bad_alloc. Zanotuj ostatni poprawnie zaalokowany rozmiar.

lecz niestety kompletnie nie wiem, jak go wykonać, byłby ktoś w stanie pomóc? Z góry dzięki ;)

1 odpowiedź

+1 głos
odpowiedź 25 stycznia 2023 przez adrian17 Ekspert (344,860 p.)
- robisz nieskończoną pętlę

- w środku pętli w kółko alokujesz jakąś ilość pamięci używając `new` (np tablicę miliona charów, to równo megabajt). Nie zwalniaj jej.

- dodajesz do jakiejś zmiennej liczącej ile już zaalokowałeś

- owijasz kod w try-catch

I tyle.

Alternatywnie, zamiast alokować w kółko pamięć, może im chodzić o to żeby alokować i zwalniać (new-delete) coraz większe tablice - milion charów, potem 2 miliony, potem miliard etc etc i zobaczyć kiedy _to_ się nie uda.
komentarz 25 stycznia 2023 przez reaktywny Nałogowiec (40,990 p.)
Pomysł może dobry, tylko jak program "pierdyknie" to czy będziemy wiedzieli w którym momencie. Trzeba by zapisywać w jakimś logu kolejne operacje.

Druga sprawa jak jest ze SWAP w OS, czy gdy nie brakuje pamięci nie jest zwiększany SWAP na dysku??
2
komentarz 25 stycznia 2023 przez adrian17 Ekspert (344,860 p.)

jak program "pierdyknie"

Ideowo, po to jest łapanie wyjątku. No i zawsze możesz wypisywać przed alokacją, a nie po.

Druga sprawa jak jest ze SWAP w OS, czy gdy nie brakuje pamięci nie jest zwiększany SWAP na dysku??

Zależy od systemu. Na przykład na linuxie możesz sobie spokojnie zaalokować znacznie, znacznie więcej niż myślisz że byś mógł (overcommit) i bardzo rzadko rzuci Ci wyjątkiem (za to później OOM killer może twardo ubić proces). Dla odróżnienia, AFAIK Windows twardo trzyma się limitu ram+swap. Domyślam się że o zaobserwowanie tego zachowania chodzi właśnie w tym zadaniu.

(ale rozmiar swapa to jest twardy limit w konfiguracji, system go sam sobie nie zwiększa)

komentarz 25 stycznia 2023 przez reaktywny Nałogowiec (40,990 p.)
Dzięki za wyjaśnienie!

Podobne pytania

0 głosów
1 odpowiedź 109 wizyt
pytanie zadane 19 grudnia 2020 w C i C++ przez Eriss69 Gaduła (4,470 p.)
0 głosów
2 odpowiedzi 200 wizyt
pytanie zadane 12 października 2020 w C i C++ przez Hubert_123 Początkujący (380 p.)
0 głosów
2 odpowiedzi 216 wizyt
pytanie zadane 28 sierpnia 2020 w C i C++ przez alek747 Nowicjusz (120 p.)

92,555 zapytań

141,402 odpowiedzi

319,540 komentarzy

61,938 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...