C语言 Kqueue udata 字段更改



在Mac上,我正在使用kqueue,它指出udata保持不变。但是,在调用event_data返回kevent数组正在被修改。什么原因可能导致这种情况?我正在传递指向转换为 void* 的字符串的指针,当我在前 3 个字符之后kevent读取时,其余字符正在修改。

谢谢

内核仅保存并返回指针本身的值,而不是它指向的内存的内容。您很可能正在传递指向稍后将被覆盖的内存的指针。

kqueue64()系统调用通过将字段定义为uint64_t来更明确地说明这一点。

最新更新