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

🔧 メモリ ・ stdlib.h ・ C11

aligned_alloc の使い方

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

書式

void *aligned_alloc(size_t alignment, size_t size);

どんな関数か

指定したアライメント境界に合わせてメモリを確保する。SIMD命令やDMA転送など、特定のバイト境界に配置されたメモリが必要な場面で使う。サイズはアライメントの倍数である必要がある処理系が多い。 通常のmallocが返すアドレスは処理系のデフォルトアライメントに揃うだけなので、より厳しい境界条件が必要な場面で使い分ける。

使用例

#include <stdlib.h>
#include <stdio.h>
int main(void) {
    void *p = aligned_alloc(16, 64);
    if (p) {
        printf("allocated\n");
        free(p);
    }
    return 0;
}

つまずきやすい注意点

⚠️ 確保したメモリは通常のfreeで解放できるが、サイズがアライメントの倍数でないと処理系によっては失敗しNULLを返す。

アプリの関数リファレンスで引く(無料・登録不要) 関数一覧へ

aligned_alloc と一緒に使う関数

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

もっと先へ:ポインタ・メモリ・ファイル入出力・セキュアコーディングを含む全26トラックと、段位検定・模試のフルセットは完全版に収録しています。

完全版(BOOTH)を見る