Wpis z mikrobloga

@soloman otóż istnieją języki, które oprócz klepania kolejnych linii kodu, wymagają umiejętności manualnego zarządzania pamięcią. Tu widzimy przykład pętli w C, która co iterację alokuje blok pamięci, nie zwalniając jej, efektem czego jest skończenie się owej pamięci ¯_(ツ)_/¯
  • Odpowiedz
@WielkiElektronig: Zależy co piszesz, wiadomo że pisanie zaawansowanej aplikacji biznesowej w C to masochizm. Ale tam gdzie musisz mieć pewność że program nie wysypie się nawet jak będzie uruchomiony przez rok, bo np. steruje nie wiem, systemem autopilota - no to sorry, trzeba mieć kontrolę nad wszystkim bo GC w złym momencie może spowodować nie wiem, odpadnięcie skrzydła czy coś xD
  • Odpowiedz
@OstryKrulAlbanii: Jeśli pisze się narzędzia, które mają wykonać swoje i od razu się zabić (np podstawowe binarki Linixa LS, CD) to używanie free() jest zbędne bo stwarza niepotrzebne ryzyko wystąpienia błędu use after free. Ofc mowa tu o małych blokach pamięci.
  • Odpowiedz
@OstryKrulAlbanii: a propos malloc kojarzę anegdotę dotyczącą tego, że kiedyś programista cpp napisał funkcję dotyczącą sprawdzenia dostępnej ilości pamięci poprzez wywoływanie malloc z rosnącymi wartościami do czasu, aż nie zwróci ona błędu, przy czym było to opatrzone komentarzem, że jest to fragment do refaktoryzacji. Jakiś czas później zauważył w innym miejscu swój kod, powszechnie używany, ale już bez komentarza. Niestety nie mogę znaleźć teraz źródła dokładnego. Ktoś coś?
  • Odpowiedz