CnUnix

[알림판목록 I] [알림판목록 II] [글목록][이 전][다 음]
[ CnUnix ] in KIDS
글 쓴 이(By): terzeron (microkid)
날 짜 (Date): 2003년 6월 17일 화요일 오전 10시 06분 34초
제 목(Title): Re: struct 내에 동적메모리 할당


1. 이상하게도 다양한 답이 나왔는데요...
제 생각에는 방법 두 가지 모두 가능합니다. 효과도 동일합니다.
(멤버 변수 arra와 arrb는 포인터이니 이 포인터가 가리키는
값도 동일해진다는 전제 하에)

2. 가능하지만 추천할만한 방법은 아닙니다. 다른 분들께서도
모양새가 좋지 않다고 하신 것처럼 말이죠.

굳이 함수를 불러서 작업을 모듈화하시려면 cc 자체를 포인터로
해서 그 공간을 할당받고 그 주소를 반환하시면 됩니다. 1)

아니면, aa와 bb의 그 주소를 넘겨서 그 공간을 할당받는 방법도
좋습니다. 2)

1) 
testdt *MakMem()
{
    testdt *cc;
    cc = (testdt *) malloc(sizeof (testdt));
    //cc->i = 3;
    return cc;
}
testdt *aa, *bb;
aa = MakMem();
bb = MakMem();

2)
void MakMem(testdt *xx)
{
    xx = (testdt *) malloc(sizeof (testdt));
    //(*xx)->i = 3;
    return;
}
testdt *aa, *bb;
MakMem(&aa);
MakMem(&bb);

사용하기에는 차라리 1번이 낫겠군요. 
    
---
어떤 성취가, 어떤 조롱이, 또는 어떤 고뇌가 나를 기다리고 있을지 나는 모른다. 
나는 아무 것도 모른다. 그러나 나는 아직 과거의 경이로운 기적의 시대가 영원히 
과거의 것이 되어 버리지는 않았다는 사실을 굳게 믿고 있다.  - Stanislaw Lem -
[알림판목록 I] [알림판목록 II] [글 목록][이 전][다 음]
키 즈 는 열 린 사 람 들 의 모 임 입 니 다.