タグ

関連タグで絞り込む (2)

タグの絞り込みを解除

cとmallocに関するsatojkovicのブックマーク (1)

  • 関数側でmalloc()するときの注意

    関数を呼び出す側でポインタ変数を宣言し、そのポインタ変数を渡した関数の内部でmalloc()やrealloc()といった関数でメモリの確保や再確保を行う場合には、注意が必要です。 問題 というのは、malloc()やrealloc()の実行後、ポインタの値が変わってしまうということです。つまり、ポインタ変数の保持しているアドレスが変わるということです。これだけではなぜ重大な問題なのかわからないかもしれませんが、よく考えてみてください。関数内で宣言したポインタ変数のスコープは関数内だけであり、関数が終了すると破棄されてしまうのです。つまり、せっかく関数内で確保したメモリ領域も、その場所を示すべきポインタの値があてにならないので、アクセスできないということになります。これを示したのが次のプログラムです。 #include <stdio.h> #include <stdlib.h> void

    satojkovic
    satojkovic 2005/06/02
    関数でmallocをすると関数終了時にメモリが開放されるよ
  • 1