🔧 C23 ・ stdlib.h ・ C23
free_sized の使い方void free_sized(void *ptr, size_t size);
解放するメモリのサイズを事前に伝えて解放するC23の新しいfree。サイズ情報をアロケータに渡すことで、内部実装によっては解放処理を高速化できる。渡すサイズは、mallocやreallocに要求したサイズ(callocなら要素数×要素サイズ)と一致させます。アロケータが内部で確保した物理的なサイズではありません。 通常のfreeと機能的には同じ結果になるため、既存コードを壊さず段階的に置き換えていくこともできる。
#include <stdlib.h>
int main(void) {
void *p = malloc(64);
if (p == nullptr) return 1;
free_sized(p, 64); // mallocに渡した64をそのまま渡す
return 0;
}
⚠️ 渡すサイズが要求したサイズと異なると未定義動作になる。サイズが分からない場合は通常のfreeを使う。aligned_allocで確保した領域には free_aligned_sized を使う。
アプリの関数リファレンスで引く(無料・登録不要) 関数一覧へ
free_sized と一緒に使う関数ckd_add
ckd_mul
ckd_sub
free_aligned_sized
stdc_bit_ceil
stdc_bit_floor
stdc_bit_width
stdc_count_ones
stdc_count_zeros
stdc_has_single_bit
stdc_leading_zeros
stdc_trailing_zeros
strndup
もっと先へ:ポインタ・メモリ・ファイル入出力・セキュアコーディングを含む全26トラックと、段位検定・模試のフルセットは完全版に収録しています。