sendmsg
是否释放缓冲区或消息的内存?
请指导我。
答案 0 :(得分:3)
不,sendmsg()
不释放传入的内存。它不可能这样做,因为那个记忆甚至可能不是来自malloc()
。在致电free()
后,您可以随时sendmsg()
内存,因为系统已经制作了必要的副本。
答案 1 :(得分:0)
不,你不能释放它。它只发送使用msghdr
结构的内存字节。
通常你将内存写入msghdr
的iovec并调用sendmsg将其转移为,
char buffer[SIZE]="DATA"; // Data to send into buffer
struct iovec io; // Segment which will store outgoing message
struct msghdr msgh; // msghdr structure
...
io.iov_base = buffer; // Specify the components of the message in an iovec
io.iov_len = SIZE;
msgh.msg_iov = &io;
...
sendmsg(fd,&msgh,0); // send msg which just send msg in a iovec buffer