picox
0.1
|
主にmalloc系の機能を提供します [詳解]
![]() |
マクロ定義 | |
#define | X_SAFE_FREE(ptr) (x_free((ptr)), (ptr) = NULL) |
x_free()を呼び出したあと、ptrにNULLを代入します [詳解] | |
関数 | |
static void * | x_calloc (size_t nmemb, size_t size) |
sizeバイトの要素nmemb個からなる配列にメモリを割り当て0初期化して返します | |
static void * | x_calloc2 (size_t size) |
sizeバイトのメモリを割り当て、0初期化して返します [詳解] | |
static void | x_free (void *ptr) |
ptrが指すメモリ空間を開放します | |
static void * | x_malloc (size_t size) |
sizeバイトのメモリを割り当てて返します | |
static void * | x_realloc (void *old_mem, size_t size) |
old_memが指すメモリブロックをsizeバイトに再割当てして返します | |
static void * | x_realloc2 (void *old_mem, size_t old_size, size_t new_size) |
old_memが指すold_sizeバイトのメモリブロックをnew_sizeバイトに再割当てして返します [詳解] | |
主にmalloc系の機能を提供します
#define X_SAFE_FREE | ( | ptr | ) | (x_free((ptr)), (ptr) = NULL) |
x_free()を呼び出したあと、ptrにNULLを代入します
無効なポインタの不正使用によるバグは、C言語で最も避けたいわかりづらいバグの 一つです。開放したポインタにはNULLをセットしておいて不正使用時は即死するよう にしておくのは良い習慣です。
|
inlinestatic |
sizeバイトのメモリを割り当て、0初期化して返します
calloc()のaバイトの要素b個割り当てるというインターフェースは、内部実装によっ ては最適化の恩恵があるのだと思いますが、picoxの実装としては何も意味がないの で、単に0初期化した動的メモリ確保を行いたいだけなら、こちらの方がシンプルで す。
|
inlinestatic |
old_memが指すold_sizeバイトのメモリブロックをnew_sizeバイトに再割当てして返します
mallocを直接実装している場合は、old_memのポインタから、直接old_sizeを取り出 すことができますが、そうではない場合サイズを取得することができないため、無駄 なコピーが必要になる場合があります。
普通、メモリの再割当てを行う場合、元のサイズは呼び出し側がわかっていることが 多いため、引数として渡してもらうことで無駄なコピーを防ぎます。