kazmax - Linux で自宅サーバー

cfree - ライブラリコールの説明 - Linux コマンド集 一覧表

  1. 名前
  2. 書式
  3. 説明
  4. 返り値
  5. 準拠

名前

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);

説明

この関数は決して使用すべきではない。 代わりに   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 ()で割り当てられたメモリを解放するのに free ()を使うことができるか、 それとも cfree ()を使う必要があるか」というものである。 答え: free ()を使うこと。

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

返り値

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

準拠

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