The ANSI C standard defines free as not returning a value; therefore, the function prototype for free is declared with a return type of void. However, since a free can fail, and since previous versions of the C RTL have declared free to return an int, the implementation of free does return 0 on success and -1 on failure.