Wpis z mikrobloga

czy destruktor jest wywoływany przy exit()


@mapache: obiektów z globalnej(statycznej) pamięci tak, tych ze stosu nie.

sprzątnie pamięć czy nie


@mapache: zalokowana pamięć powinna się zwolnić(zarówno ze wskaźników ze stosu, jak i z pamięci statycznej). gorzej z przestawieniem gpio - jeżeli były ustawione jakieś np. wysokie impedancje przy destruktorach obiektów ze stosu, to wtedy się nie odpalą.
  • Odpowiedz
@mapache: w jakim sensie sprzatnie pamiec? jezeli martwisz sie o zmienne zadeklarowane na stercie to nie ma powodow do obaw. system operacyjny sam odzyska pamiec ktora byla zadeklarowana jako uzywana przez ten proces
  • Odpowiedz
@Kaczus2B: to prawda, ale co jeśli np. destruktor usuwa plik z PIDem? Przykładowo robisz sobie coś takiego:

class PIDGuard {
std::string fn;

PIDGuard(std::string
  • Odpowiedz
@AgainPsychoX: a jakie inne rozwiązanie proponujesz? Mechanizm zwijania stosu przez wiele warstw wywołań jest używany nawet w językach, które nie używają wyjątków do błedów (np. Rust, Go).
  • Odpowiedz
@Saly: @mag_zbc:

Nie jest to lepsza praktyka, bo wyjątki tak samo jak zwalnianie pamięci po zakończeniu programu mogą być nieobsługiwane przez system. Druga sprawa, to rodzaj implementacji wyjątków: Jeśli jest to SEH to pół biedy, ale jeśli chodzi o starsze SJLJ/DWARF to dramat pod względem optymalizacji.

Jeśli chodzi o wyjątki to już lepiej popatrzeć na nowocześniejsze rozwiązania, bardziej przez optional (https://www.youtube.com/watch?v=ARYP83yNAWk) .
  • Odpowiedz