| .\" Copyright (c) 2003 Andries Brouwer (aeb@cwi.nl) |
| .\" |
| .\" This is free documentation; you can redistribute it and/or |
| .\" modify it under the terms of the GNU General Public License as |
| .\" published by the Free Software Foundation; either version 2 of |
| .\" the License, or (at your option) any later version. |
| .\" |
| .\" The GNU General Public License's references to "object code" |
| .\" and "executables" are to be interpreted as the output of any |
| .\" document formatting or typesetting system, including |
| .\" intermediate and printed output. |
| .\" |
| .\" This manual is distributed in the hope that it will be useful, |
| .\" but WITHOUT ANY WARRANTY; without even the implied warranty of |
| .\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| .\" GNU General Public License for more details. |
| .\" |
| .\" You should have received a copy of the GNU General Public |
| .\" License along with this manual; if not, write to the Free |
| .\" Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, |
| .\" USA. |
| .\" |
| .TH CFREE 3 2007-07-26 "" "Linux Programmer's Manual" |
| .SH NAME |
| cfree \- free allocated memory |
| .SH SYNOPSIS |
| .nf |
| .sp |
| .B "#include <stdlib.h>" |
| .sp |
| /* In SunOS 4 */ |
| .BI "int cfree(void *" ptr ); |
| .sp |
| /* In glibc or FreeBSD libcompat */ |
| .BI "void cfree(void *" ptr ); |
| .sp |
| /* In SCO OpenServer */ |
| .BI "void cfree(char *" ptr ", unsigned " num ", unsigned " size ); |
| .sp |
| /* In Solaris watchmalloc.so.1 */ |
| .BI "void cfree(void *" ptr ", size_t " nelem ", size_t " elsize ); |
| .fi |
| .sp |
| .in -4n |
| Feature Test Macro Requirements for glibc (see |
| .BR feature_test_macros (7)): |
| .in |
| .sp |
| .BR cfree (): |
| _BSD_SOURCE || _SVID_SOURCE |
| .SH DESCRIPTION |
| This function should never be used. |
| Use |
| .BR free (3) |
| instead. |
| .SS "1-arg cfree" |
| In glibc, the function |
| .BR cfree () |
| is a synonym for |
| .BR free (3), |
| "added for compatibility with SunOS". |
| .LP |
| Other systems have other functions with this name. |
| The declaration is sometimes in |
| .I <stdlib.h> |
| and sometimes in |
| .IR <malloc.h> . |
| .SS "3-arg cfree" |
| Some SCO and Solaris versions have malloc libraries with a 3-argument |
| .BR cfree (), |
| apparently as an analog to |
| .BR calloc (3). |
| .LP |
| If you need it while porting something, add |
| .sp |
| .in +4n |
| #define cfree(p, n, s) free((p)) |
| .in |
| .sp |
| to your file. |
| .LP |
| A frequently asked question is "Can I use |
| .BR free (3) |
| to free memory allocated with |
| .BR calloc (3), |
| or do I need |
| .BR cfree ()?" |
| Answer: use |
| .BR free (3). |
| .LP |
| An SCO manual writes: "The cfree routine is provided for compliance |
| to the iBCSe2 standard and simply calls free. |
| The num and size |
| arguments to cfree are not used." |
| .SH "RETURN VALUE" |
| The SunOS version of |
| .BR cfree () |
| (which is a synonym for |
| .BR free (3)) |
| returns 1 on success and 0 on failure. |
| In case of error, |
| .I errno |
| is set to |
| .BR EINVAL : |
| the value of |
| .I ptr |
| was not a pointer to a block previously allocated by |
| one of the routines in the |
| .BR malloc (3) |
| family. |
| .SH "CONFORMING TO" |
| The 3-argument version of |
| .BR cfree () |
| as used by SCO conforms to the iBCSe2 standard: |
| Intel386 Binary Compatibility Specification, Edition 2. |
| .SH SEE ALSO |
| .BR malloc (3) |