このエントリーをはてなブックマークに追加


動的にメモリを取得する・malloc

malloc関数を使用することにより指定したサイズ(バイト)のメモリを取得することができます。
以下にC言語のサンプルソースと実行例を記します。


スポンサーリンク

関連記事

malloc書式など

malloc関数の書式などを以下に記します。

  • インクルードが必要なファイル
    #include <stdlib.h>
  • mallocの書式
    void *malloc(size_t size);
  • 戻り値
    取得したメモリの先頭アドレス
  • 引数
    取得するメモリサイズ(バイト)

mallocのCサンプルコード

以下にmallocを使ったCサンプルコードを記します。
サンプルコードでは、文字列HELLO WORLD!(改行)と同じメモリサイズをmallocで取得しています。
取得したメモリにコピー後、tolower関数で小文字に変換しています。
表示後、free関数にてmallocで取得したメモリを解放しています。

filemalloc.c (改行コードLF)

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


int main(void)
{
    char *src = "HELLO WORLD!\n";
    char *p = NULL;
    int i;

    p = malloc(strlen(src)+1);
    if (p == NULL) {
        perror("malloc() error!");
        exit(EXIT_FAILURE);
    }
    strcpy(p,src);
    for (i=0; i<strlen(p); i++) {
        p[i] = (char)tolower(p[i]);
    }

    printf("%s", src);
    printf("%s", p);

    if (p != NULL) {
        free(p);
        p = NULL;
    }

    return 0;
}

上記Cサンプルコードをコンパイルし実行した結果です。

$ gcc malloc.c -o malloc
$ ./malloc
HELLO WORLD!
hello world!

mallocで+1している理由は、文字列の終端のNULLが格納されるエリア(1バイト)を追加しています。
以上、mallocによる動的メモリの取得のサンプルコードでした。


スポンサーリンク

添付ファイル: filemalloc.c 179件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2015-03-20 (金) 21:01:00 (1338d)