何时释放传入bind()的sockaddr结构体才安全?
问题
bind()函数要求传入一个指向struct sockaddr的指针,请问调用bind()后立即释放该结构体是否安全?还是必须等到套接字关闭后才能释放?若调用bind()后可立即释放该结构体,内核是否会保留该地址的副本?
回答
- 调用
bind()后立即释放该结构体是完全安全的,无需等待套接字关闭。 - 内核在
bind()系统调用执行过程中,会将传入的struct sockaddr结构体中的地址信息完整复制一份,存储在内核空间中。 - 后续该套接字的所有相关操作,都会依赖内核保存的这份副本,不再需要访问用户空间中最初传入的那个结构体。用户态的内存释放操作不会对内核中的副本产生任何影响。
内容的提问来源于stack exchange,提问作者srgsanky
相关产品推荐
相关产品推荐

