EN JA
CFREE(3)
CFREE(3) Linux Programmer's Manual CFREE(3)

名前

cfree -割り当てられたメモリを解放する

書式

 

#include <stdlib.h>
 

/* SunOS 4 では */
int cfree(void * ptr );
 

/* glibc と FreeBSD libcompat では */
void cfree(void * ptr );
 

/* SCO OpenServer では */
void cfree(char * ptr , unsigned num , unsigned size );
 

/* Solaris watchmalloc.so.1 では */
void cfree(void * ptr , size_t nelem , size_t elsize );
 

glibc 向けの機能検査マクロの要件 ( feature_test_macros(7) 参照):
 
cfree(): _BSD_SOURCE || _SVID_SOURCE

説明

この関数は決して使用すべきではない。代わりに free(3) を使うこと。

引き数が 1 つの cfree

glibc では、関数 cfree() は free(3) の別名であり、「SunOS との互換性のために追加された」。

他のシステムでは、この名前の別の関数がある。この宣言は <stdlib.h> に存在する場合もあるし、 <malloc.h> に存在する場合もある。

引き数が 3 つの cfree

SCO と Solaris のいくつかのバージョンでは、引き数が 3 つの cfree() が含まれる malloc ライブラリがある。これは明らかに calloc(3) に類似している。

何かを移植する時にこの関数が必要な場合、

 


#define cfree(p, n, s) free((p))

 

をファイルに追加すること。

よく尋ねられる質問は「 calloc(3) で割り当てられたメモリを解放するのに free(3) を使うことができるか、それとも cfree() を使う必要があるか」というものである。答え: free(3) を使うこと。

SCO のマニュアルには以下のように記述されている: 「cfree ルーチンは iBCSe2 規格に従うために提供されており、単に free を呼んでいるだけである。 cfree の num と size 引き数は使用されない。」

返り値

SunOS 版の cfree() ( free(3) の別名) は、成功した場合に 1 を返し、失敗した場合に 0 を返す。エラーの場合、 errnoEINVAL に設定される: ptr の値が malloc() 系のルーチンの 1 つで以前に割り当てられたブロックへのポインタでない。

準拠

SCO で用いられている引き数が 3 つの cfree() は、iBCSe2 規格: Intel386 Binary Compatibility Specification, Edition 2 (Intel386 バイナリ互換仕様、第 2 版) に準拠する。

関連項目

malloc(3)

この文書について

この man ページは Linux man-pages プロジェクトのリリース 3.51 の一部である。プロジェクトの説明とバグ報告に関する情報は http://www.kernel.org/doc/man-pages/ に書かれている。
2007-07-26