ページ 11

動的メモリ確保と解放について

Posted: 2010年9月13日(月) 10:28
by びっくす
初めまして。びっくすと申します。
環境はxp, vc++2008, c言語になります。

現在メモリの動的確保を行う関数と解放を行う関数を自作しております。
そこで少し詰まってしまったので、教えていただけないでしょうか?
#include <stdio.h>
#include <stdlib.h>

int Malloc(int **a)
{
    *a = (int *)malloc(100 * sizeof(int));
    if (!*a) {
        return -1;
    }

    return 0;
}

void Free(int *a)
{    
    if (a) {
        free(a);
    }
}

int main(void)
{
    int   *a;

    Malloc(&a);

    Free(a);

    return 0;
}
上記サンプルコードでFree関数の部分なのですが、
仮引数をダブルポインターにする必要があるでしょうか?
もしくはこのままでいいでしょうか?
ご返答よろしくお願いします。

Re:動的メモリ確保と解放について

Posted: 2010年9月13日(月) 11:31
by softya
ポインタを書き換えるわけではないので構わないと思います。
ただ、解放後にポインタ値をFree側でNULLにしたいならダブルポインタにしないといけません。

Re:動的メモリ確保と解放について

Posted: 2010年9月13日(月) 13:36
by びっくす
>ポインタを書き換えるわけではないので構わないと思います。
ただ、解放後にポインタ値をFree側でNULLにしたいならダブルポインタにしないといけません。

分かりやすい説明ありがとうございます^^
理解できました。