nn_freemsg(3)
=============

NAME
----
nn_freemsg - deallocate a message


SYNOPSIS
--------
*#include <nanomsg/nn.h>*

*int nn_freemsg (void '*msg');*


DESCRIPTION
-----------
Deallocates a message allocated using <<nn_allocmsg#,nn_allocmsg(3)>> function or
received via <<nn_recv#,nn_recv(3)>> or <<nn_recvmsg#,nn_recvmsg(3)>> function.
While <<nn_recv#,nn_recv(3)>> and <<nn_recvmsg#,nn_recvmsg(3)>> allow to receive data
into arbitrary buffers, using library-allocated buffers can be more
efficient for large messages as it allows for using zero-copy techniques.


RETURN VALUE
------------
If the function succeeds zero is returned. Otherwise, -1 is
returned and 'errno' is set to to one of the values defined below.


ERRORS
------
*EFAULT*::
The message pointer is invalid.


EXAMPLE
-------

----
void *buf;
nn_recv (s, &buf, NN_MSG, 0);
nn_freemsg (buf);
----


SEE ALSO
--------
<<nn_allocmsg#,nn_allocmsg(3)>>
<<nn_reallocmsg#,nn_reallocmsg(3)>>
<<nn_recv#,nn_recv(3)>>
<<nn_recvmsg#,nn_recvmsg(3)>>
<<nanomsg#,nanomsg(7)>>

AUTHORS
-------
link:mailto:sustrik@250bpm.com[Martin Sustrik]

