名 前
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 を 返 す 。 エ ラ ー の 場 合 、 errno が EINVAL に 設 定 さ れ る : ptr の 値 が malloc() 系 の ル ー チ ン の 1 つ で 以 前 に 割 り 当 て ら れ た ブ ロ ッ ク へ の ポ イ ン タ ー で な い 。
準 拠
SCO で 用 い ら れ て い る 引 き 数 が 3 つ の cfree() は 、 iBCSe2 規 格 : Intel386 Binary Compatibility Specification, Edition 2 (Intel386 バ イ ナ リ 互 換 仕 様 、 第 2 版 ) に 準 拠 す る 。
関 連 項 目
こ の 文 書 に つ い て
こ の man ペ ー ジ は Linux man−pages プ ロ ジ ェ ク ト の リ リ ー ス 3.79 の 一 部 で あ る 。 プ ロ ジ ェ ク ト の 説 明 と バ グ 報 告 に 関 す る 情 報 は http://www.kernel.org/doc/man−pages/ に 書 か れ て い る 。