Sto sviluppando un server in C con epoll library e ho una domanda su come viene gestita la memoria per struct epoll_event
. Ho notato in alcuni esempi online che, quando si effettuano le chiamate epoll_ctl
, l'argomento events
è allocato sullo stack e poi viene passato il puntatore, in questo modo:Gestione memoria con struct epoll_event
struct epoll_event ev;
ev.events = EPOLLIN;
epoll_ctl(epfd, EPOLL_CTL_ADD, sockfd, &ev);
Ora sappiamo tutti cosa succede a ev
quando il funzione restituisce. La mia domanda è: la libreria epoll fa copie di questi valori internamente o si basa sulla struttura che hai passato per essere allocata su heap? L'esempio sopra descritto interromperà totalmente l'implementazione del mio reattore? In tal caso, qual è il modo migliore per tenere traccia delle mie strutture assegnate allo stack epoll_event
?
Grazie per il vostro tempo.
Se "sappiamo tutti cosa succede", allora perché lo chiedi? –
Quando dico "sappiamo tutti cosa succede" intendo che la memoria allocata nello stack viene rilasciata quando la funzione ritorna. –