구조체 malloc 에 대해서요~~
글쓴이: feelsocrazy / 작성시간: 토, 2008/04/19 - 5:29오후
struct people{
char *name;
char *mobile;
char *address;
};
people *pe;
pe[1]~pe[10]까지 malloc 써서....하고
각각의 구조체 멤버에 대해서는 free를 어떻게 시키나요??
구조체자체는 그냥
free(pe);
하면 된다고 생각하는대.......그 각각의 멤버들은 그냥 같이 free되어 버리는 건가요??
Forums:


malloc한 순서 반대로
malloc한 순서 반대로 free를 하면 됩니다.
즉 멤버를 각각 free 해 준 후에 pe를 free 해 주어야 합니다.
struct people{ char
struct people{ char *name; char *mobile; char *address; }; people *pe;윗분 말씀대로 하심됩니다만.
이름이나 폰번호, 주소는 보통 길이가 일정하지 않습니까.
typedef struct people{ char name[17]; /* UTF-8에서 한글 4글자 */ char mobile[14]; /* 010-1111-1111 */ /* 안돌이지돌이다래미한숨바우는 강원도 정선군 북평면 숙암리에 있는 대한민국에서 가장 이름이 긴 지명으로 총 13글자이다. */ char address[120]; /* 대충 */ } people; /* C언어에서는 구조체를 사용할 때 struct를 붙여야 사용할 수 있지만 typedef해주었기 때문에 */ people *pe;이렇게 해서 구조체만 malloc으로 사용하는게 어떨까요?
제가 생각하기엔..
구조체내의 포인터의 경우 따로 malloc를 해주셔야 하며,
윗분말씀처럼 각 포인터를 차라리 배열로 바꿔주시는게 정신건강에 좋을것 같네요 ^^
만약 포인터로 쓰셔야 쓰셔야한다면 각 맴버들을 따로 메모리 할당을 하고, 나중에도 말슴하긴 것처럼 free()해쥬시면 될것같습니다 ^^
제가 알고 싶던 것 중의 하난데..
저같은 경우에는 행맨 프로그램을 짜는 과제가 있는데
비슷한 질문글이라서 이렇게 궁금한점 질문을 한번 해봅니다.
typedef struct _word { char name [ MAX_WORD ]; char part [ MAX_WORD ]; char explanation [ MAX_EXPLAN ]; }Word; // 기존 코드 typedef struct _word { char *name; char *part; char *explanation; }Word; // 변경 코드 //메인 함수 내 Word *word;원래는 기존 코드를 작성 했었는데요
단어 설명에 있어서 제한이 없이 출력이 가능하게 구현하라고 요구조건에 나와있습니다.
그래서 구조체를 동적할당 하고
구조체 맴버 역시 동적할당을 한다면
임의의 구조체맴버를 찾아갈때
어떤식으로 그 값을 찾게되나요
&word[i] -> name 이런식인가요?
- 군복학하고 아무것도 모르는 상태에서 행맨이라는 큰 프로그렘이 떨어지니 참 무섭네요;;
다음이
다음이 아닐까요.
댓글 달기