Kqueue udata字段变化
Kqueue udata field changing
在mac我正在使用kqueue,它声明udata没有改变。然而,在 event_data
of kevent
调用中返回的数组正在做一些修改。什么会导致这个?我正在传递指向转换为 void* 的字符串的指针,当我在前 3 个字符后的 kevent
之后读取时,其余的都被修改了。
谢谢
内核只保存和returns指针本身的值,而不是它指向的内存的内容。很有可能您正在传递指向稍后将被覆盖的内存的指针。
kqueue64()
系统调用通过将字段定义为 uint64_t
.
对此更明确一点
在mac我正在使用kqueue,它声明udata没有改变。然而,在 event_data
of kevent
调用中返回的数组正在做一些修改。什么会导致这个?我正在传递指向转换为 void* 的字符串的指针,当我在前 3 个字符后的 kevent
之后读取时,其余的都被修改了。
谢谢
内核只保存和returns指针本身的值,而不是它指向的内存的内容。很有可能您正在传递指向稍后将被覆盖的内存的指针。
kqueue64()
系统调用通过将字段定义为 uint64_t
.