通知
すべてクリア
Topic starter
2001年8月27日 9:22 PM
下記のソースで free(st) の前に free(st->p1) は
必要ですか?もし、必要なら理由はなぜですか?
単純に領域確保したところは個々に開放しなくてはならないから
なのでしょうか?
アドバイスをお願いします。
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
typedef struct st{
char* p1;
int a;
} ST;
void main()
{
ST* st;
st = (ST*)malloc(sizeof(ST));
st->p1 = (char*)malloc(2*sizeof(char));
*(st->p1) = 2;
*(st->p1+1) = 3;
free(st);
}
2001年8月28日 7:50 AM
> 下記のソースで free(st) の前に free(st->p1) は
>必要ですか?もし、必要なら理由はなぜですか?
必要だと思います。
free(st)でp1(ポインタ)は解放されますが、ポインタの指した場所から
確保された領域は開放されないでしょう。
>単純に領域確保したところは個々に開放しなくてはならないから
>なのでしょうか?
私はむずかしいことは解りませんが、1対1で考えればトラブルも
少ないのではないでしょうか。
Topic starter
2001年8月28日 7:09 PM
普通に考えたらやっぱり開放したほうがいいですよね。
安全のためにもちゃんと開放していきます。
ありがとうございました。