- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在互联网上浏览代码时,我经常看到这样的片段:
struct epoll_event event;
memset(&event, 0, sizeof(event));
如果事件填写完整,这种模式对我来说似乎是不必要的,但它很普遍。也许是为了考虑结构 future 可能发生的变化?
最佳答案
这肯定是糟糕的复制粘贴编码。 The man page for epoll
没有记录对 epoll_event
结构进行零初始化的任何需要,并且在示例中也没有这样做。 future 对该结构的更改似乎是不可能的 (ABI),但如果是的话,契约(Contract)显然会忽略与您请求的 events
无关的结构的任何部分(甚至不读取,因为调用者可能正在传递指向未超出原始定义的存储的指针)。
此外,一般来说,当结构应该被零初始化时,使用 memset
充其量是没有意义的,最坏的情况是不正确/不可移植,因为零表示不需要是零值(对于指针和浮点类型)。如今,这种通用性主要是出于历史好奇,与 epoll
这样的 Linux 特定接口(interface)无关,但它也出现在 mbstate_t
中,它存在于完全通用的 C 中,并且需要零初始化才能正确使用关联的接口(interface)。对需要零值而不是全零字节表示的事物进行零初始化的正确方法是使用通用零初始化器 { 0 }
。
关于c - struct epoll_event memset 还是没有 memset?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58769291/
我正在使用 epoll library 用 C 语言开发服务器我有一个关于如何为 struct epoll_event 处理内存的问题。我在一些在线示例中注意到,当进行 epoll_ctl 调用时,e
在互联网上浏览代码时,我经常看到这样的片段: struct epoll_event event; memset(&event, 0, sizeof(event)); 如果事件填写完整,这种模式对我来说
我一直在寻找 this question 的答案我遇到了 Linux 中的函数 timerfd_create 和 epoll。在一个教程中说 epoll_ctl() 有一个 epoll_data_t
Linux kernel manpages声明epoll_ctl过程如下: int epoll_ctl(int epfd, int op, int fd, struct epoll_event *ev
如果 GCC 构建选项带有 -mms-bitfields ,则 epoll_event.data.u64 值可以通过 epoll_wait 截断为 4 字节值>. 我有一个使用 epoll 的套接字服
我是一名优秀的程序员,十分优秀!