下の階層の領域は開放しなくて大丈夫? – プログラミング – Home

下の階層の領域は開放しなくて大丈夫?
 
通知
すべてクリア

[解決済] 下の階層の領域は開放しなくて大丈夫?


matu
 matu
(@matu)
ゲスト
結合: 24年前
投稿: 2
Topic starter  

 下記のソースで 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);
}


引用未解決
トピックタグ
Bun
 Bun
(@Bun)
ゲスト
結合: 24年前
投稿: 761
 

> 下記のソースで free(st) の前に free(st->p1) は
>必要ですか?もし、必要なら理由はなぜですか?
必要だと思います。
free(st)でp1(ポインタ)は解放されますが、ポインタの指した場所から
確保された領域は開放されないでしょう。

>単純に領域確保したところは個々に開放しなくてはならないから
>なのでしょうか?
私はむずかしいことは解りませんが、1対1で考えればトラブルも
少ないのではないでしょうか。


返信引用
matu
 matu
(@matu)
ゲスト
結合: 24年前
投稿: 2
Topic starter  

 普通に考えたらやっぱり開放したほうがいいですよね。
安全のためにもちゃんと開放していきます。

 ありがとうございました。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました