“sendmsg”是否可以释放缓冲区或消息的内存?

时间:2014-02-17 14:03:52

标签: c linux memory

sendmsg是否释放缓冲区或消息的内存?

请指导我。

2 个答案:

答案 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