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

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
びっくす

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

#1

投稿記事 by びっくす » 15年前

初めまして。びっくすと申します。
環境は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関数の部分なのですが、
仮引数をダブルポインターにする必要があるでしょうか?
もしくはこのままでいいでしょうか?
ご返答よろしくお願いします。

softya

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

#2

投稿記事 by softya » 15年前

ポインタを書き換えるわけではないので構わないと思います。
ただ、解放後にポインタ値をFree側でNULLにしたいならダブルポインタにしないといけません。

びっくす

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

#3

投稿記事 by びっくす » 15年前

>ポインタを書き換えるわけではないので構わないと思います。
ただ、解放後にポインタ値をFree側でNULLにしたいならダブルポインタにしないといけません。

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

閉鎖

“C言語何でも質問掲示板” へ戻る