Pracuję nad serwerem w C z epoll library i mam pytanie, jak pamięć jest obsługiwana dla struct epoll_event
. Zauważyłem w niektórych przykładach internetowych, że podczas dokonywania epoll_ctl
połączenia, events
argument alokowanych na stosie, a następnie wskaźnik jest przekazywana, tak:Obsługa pamięci za pomocą struct epoll_event
struct epoll_event ev;
ev.events = EPOLLIN;
epoll_ctl(epfd, EPOLL_CTL_ADD, sockfd, &ev);
Teraz wszyscy wiemy, co dzieje się, gdy ev
funkcja zwraca. Moje pytanie brzmi: czy biblioteka epoll tworzy kopie tych wartości wewnętrznie, czy też opiera się na strukturze przekazanej do przydzielenia sterty? Czy powyższy przykład całkowicie złamie moją implementację reaktora? Jeśli tak, jaki jest najlepszy sposób na śledzenie moich struktur przydzielonych epoll_event
sterty?
Dzięki za poświęcony czas.
Jeśli "wszyscy wiemy, co się dzieje", dlaczego pytasz? –
Kiedy mówię "wszyscy wiemy, co się dzieje" mam na myśli to, że pamięć przydzielona do stosu jest zwalniana, gdy funkcja zwraca. –