Piszę program przestrzeni użytkownika, który współdziała z kontrolerem odtwarzania wideo USB. Programuję w C++, a program ma działać na Linuksie. Podczas studiowania podręcznika libusb natknąłem się na funkcję void libusb_exit (struct libusb_context * ctx)
.Jakie są konsekwencje nie wywoływania libusb_exit()
Opis says:
Deinitialize libusb.
Powinien zostać wywołany po zamknięciu wszystkich otwartych urządzeń i przed zamknięciem aplikacji .
Instrukcja nie wyjaśnia, dlaczego jest potrzebna. Byłem ciekawy konsekwencji zakończenia programu, który zainicjował i użył libusb bez wywoływania libusb_exit()
. Czy ktoś może wyjaśnić, co może się stać złymi rzeczami, jeśli z jakiegoś powodu mój program nie zadzwoni pod numer libusb_exit()
przed zakończeniem? Czy spowoduje to wyciek zasobów systemowych?
Myślę, że źle rozumiesz (lub nie odpowiadasz) pytanie. IIUC pyta, dlaczego konieczne byłoby wywołanie 'libusb_exit' przed zakończeniem procesu (ponownie, IIUC, w rzeczywistości nie jest to konieczne). Twoja wzmianka o _crashes_ jest myląca. W jaki sposób biblioteka radzi sobie z kontekstami w inny sposób, jeśli aplikacja "ściąga" w porównaniu do czystego wychodzenia? – davmac