C言語学習ポータル(無料版) 学習コンテンツ 関数リファレンス free_sized

🔧 C23 ・ stdlib.h ・ C23

free_sized の使い方

C言語 標準ライブラリ関数リファレンス(無料公開)

書式

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 と一緒に使う関数

freemalloc/calloc/reallocで確保したメモリ領域を解放する。解放後は同じポインタを再利用してはいけない(必… malloc指定バイト数のメモリ領域をヒープから動的に確保し、先頭アドレスを返す。確保した内容は初期化されない(不定値)ため、必要な…

同じ分類(C23)の関数

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トラックと、段位検定・模試のフルセットは完全版に収録しています。

完全版(BOOTH)を見る