Tôi đang phát triển một máy chủ trong C với epoll library và tôi có câu hỏi về cách xử lý bộ nhớ cho struct epoll_event
. Tôi đã nhận thấy trong một số ví dụ trực tuyến đó, khi thực hiện cuộc gọi epoll_ctl
, lập luận events
được cấp phát trên stack và sau đó con trỏ được thông qua, như vậy:Xử lý bộ nhớ với cấu trúc epoll_event
struct epoll_event ev;
ev.events = EPOLLIN;
epoll_ctl(epfd, EPOLL_CTL_ADD, sockfd, &ev);
Bây giờ tất cả chúng ta đều biết những gì xảy ra với ev
khi chức năng trả về. Câu hỏi của tôi là: thư viện epoll có tạo bản sao của các giá trị này trong nội bộ hay không dựa trên cấu trúc mà bạn đã chuyển để được phân bổ heap? Ví dụ trên sẽ phá vỡ hoàn toàn việc thực hiện lò phản ứng của tôi? Nếu vậy, cách tốt nhất để theo dõi các heap của tôi được phân bổ epoll_event
cấu trúc là gì?
Cảm ơn thời gian của bạn.
Nếu "tất cả chúng ta đều biết điều gì xảy ra" thì tại sao bạn hỏi? –
Khi tôi nói "tất cả chúng ta đều biết điều gì sẽ xảy ra", nghĩa là bộ nhớ được cấp phát sẽ được giải phóng khi hàm trả về. –