先頭へ戻る

malloc | Programming Place Plus C言語編 標準ライブラリのリファレンス

Programming Place Plus トップページ -- C言語編 -- 標準ライブラリのリファレンス(名前順)

Programming Place Plus トップページ -- C言語編 -- 標準ライブラリのリファレンス(ヘッダ別)

先頭へ戻る

malloc関数

概要

動的にメモリ領域を確保する

ヘッダ

stdlib.h

形式

void* malloc(size_t size);

引数

size

確保する領域の大きさ。0 を指定した場合の動作は処理系定義。

戻り値

確保された領域の先頭を指すポインタ。メモリ不足などの要因で失敗した場合には、ヌルポインタが返される。
要求した大きさが 0 の場合は、ヌルポインタが返されるか、何らかの有効なメモリアドレスが返されるかのいずれかである。後者の場合は、そのメモリアドレスを参照してはならない。

詳細

確保された領域が不要になったら、free関数で解放(システムへ返却)できる。

注意

システムがメモリ領域を管理するための追加の領域が必要なため、実際に割り当てられる大きさは、size を超える可能性がある。
割り当てられた領域の状態は不定である。calloc関数を使えば、各バイトが 0 で初期化された領域を得られる。

使用例

#include <stdio.h>
#include <stdlib.h>

#define ALLOCATE_SIZE   (10)

int main(void)
{
    int* values;
    int i;

    values = malloc( sizeof(int) * ALLOCATE_SIZE );
    if( values == NULL ){
        exit( EXIT_FAILURE );
    }

    for( i = 0; i < ALLOCATE_SIZE; ++i ){
        values[i] = i;
    }

    for( i = 0; i < ALLOCATE_SIZE; ++i ){
        printf( "%d\n", values[i] );
    }

    free( values );

    return 0;
}

実行結果:

0
1
2
3
4
5
6
7
8
9

関連

calloc関数を使うと、各バイトが 0 で初期化された領域を確保できる。また、realloc関数は領域の再確保を行う。

解説章

第35章


参考リンク


------------------------------------------------------------------------

更新履歴

'2018/4/20 「NULL」という表記を「ヌルポインタ」に修正。

'2018/4/6 引数 size に 0 を指定したときの挙動について追記。

'2018/1/29 説明文について、全体的に見直した(主に、関連する関数の内容との整合性の調整)

'2018/1/22 新規作成。


------------------------------------------------------------------------

標準ライブラリのリファレンス(名前順)のトップページへ

標準ライブラリのリファレンス(ヘッダ別)のトップページへ

C言語編のトップページへ

Programming Place Plus のトップページへ



はてなブックマーク に保存 Pocket に保存 Facebook でシェア
Twitter でツイート Twitter をフォロー LINE で送る
rss1.0 取得ボタン RSS 管理者情報 プライバシーポリシー