2014-02-17 88 views

回答

3

不,sendmsg()不釋放傳入的內存。它不可能這樣做,因爲該內存可能不是來自malloc()。你可以在sendmsg()之後的任何時候撥打free(),因爲系統已經做好了必要的拷貝。

+0

由於某種原因,我發現「......內存可能甚至不是來自malloc()」的線條「幽默」。 –

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 
+0

謝謝。我現在明白了。再次感謝。 –

相關問題