Q&A

  • 메모리를 원래대로 돌리지 못해요..
창(Form1)에서 다른 창(Form2)을 부를때 아래와 같이 하였습니다.



다른 창 부를때..

Form2 := TForm2.Create(Self);

Form2.Show;



이때 Project Options의 Option에서는

Auto-create forms에는 Form1만을 선택하고

Available forms에는 나머지를 선택(Form2)..





Form2를 닫을 때..

FormClose이벤트에는

Action := caFree;

FormDestroy이벤트에는

Form2 := nil;



위와 같이 코딩을 하고.

Form1에서 Form2를 부르고 메모리 체크를 하면(NT에서 작업관리자)

약 100 정도 늘었습니다.

그리고 Form2를 닫으면 메모리를 원래대로 돌리지 못하고 그대로 있습니다.



어떻게 해야지 원래대로 돌릴 수 있나요..?



Form2를 자주 열었다 닫으면 메모리가 가득차서 그런지.

리소스 부족이 됩니다.



감사합니다.

2  COMMENTS
  • Profile
    김영대 2000.10.28 03:51
    안녕하세염...



    델파이의 폼역시 하나의 객체입니당.~

    맞나....??



    맞을겁니다.

    객체에 할당된 메모리를 돌려 주려면 당연히 객체를 Free를

    시켜줘여지영~

    않그렇습니까?

    그러니까...

    try

    Form2 := TForm2.Create(Self);

    Form2.Show;

    finally

    Form2.Free;

    end;







    빈거울 wrote:

    > 창(Form1)에서 다른 창(Form2)을 부를때 아래와 같이 하였습니다.

    >

    > 다른 창 부를때..

    > Form2 := TForm2.Create(Self);

    > Form2.Show;

    >

    > 이때 Project Options의 Option에서는

    > Auto-create forms에는 Form1만을 선택하고

    > Available forms에는 나머지를 선택(Form2)..

    >

    >

    > Form2를 닫을 때..

    > FormClose이벤트에는

    > Action := caFree;

    > FormDestroy이벤트에는

    > Form2 := nil;

    >

    > 위와 같이 코딩을 하고.

    > Form1에서 Form2를 부르고 메모리 체크를 하면(NT에서 작업관리자)

    > 약 100 정도 늘었습니다.

    > 그리고 Form2를 닫으면 메모리를 원래대로 돌리지 못하고 그대로 있습니다.

    >

    > 어떻게 해야지 원래대로 돌릴 수 있나요..?

    >

    > Form2를 자주 열었다 닫으면 메모리가 가득차서 그런지.

    > 리소스 부족이 됩니다.

    >

    > 감사합니다.

  • Profile
    빈거울 2000.10.28 04:17
    답변감사합니다.



    김영대님이 알려주신데로..

    try

    Form2 := TForm2.Create(Self);

    Form2.Show;

    finally

    Form2.Free;

    end;

    이렇게 했는데

    Form2를 부르지 못합니다.(Show를 하지 못하는거 같습니다.)

    그리고 메모리는 올라간 그대로 빠지지 않습니다.

    (Form2를 부른 후 바로 Close됩니다. 그리고는 메모리에서는 빠지지 않습니다.)



    감사합니다.





    김영대 wrote:

    > 안녕하세염...

    >

    > 델파이의 폼역시 하나의 객체입니당.~

    > 맞나....??

    >

    > 맞을겁니다.

    > 객체에 할당된 메모리를 돌려 주려면 당연히 객체를 Free를

    > 시켜줘여지영~

    > 않그렇습니까?

    > 그러니까...

    > try

    > Form2 := TForm2.Create(Self);

    > Form2.Show;

    > finally

    > Form2.Free;

    > end;

    >

    >

    >

    > 빈거울 wrote:

    > > 창(Form1)에서 다른 창(Form2)을 부를때 아래와 같이 하였습니다.

    > >

    > > 다른 창 부를때..

    > > Form2 := TForm2.Create(Self);

    > > Form2.Show;

    > >

    > > 이때 Project Options의 Option에서는

    > > Auto-create forms에는 Form1만을 선택하고

    > > Available forms에는 나머지를 선택(Form2)..

    > >

    > >

    > > Form2를 닫을 때..

    > > FormClose이벤트에는

    > > Action := caFree;

    > > FormDestroy이벤트에는

    > > Form2 := nil;

    > >

    > > 위와 같이 코딩을 하고.

    > > Form1에서 Form2를 부르고 메모리 체크를 하면(NT에서 작업관리자)

    > > 약 100 정도 늘었습니다.

    > > 그리고 Form2를 닫으면 메모리를 원래대로 돌리지 못하고 그대로 있습니다.

    > >

    > > 어떻게 해야지 원래대로 돌릴 수 있나요..?

    > >

    > > Form2를 자주 열었다 닫으면 메모리가 가득차서 그런지.

    > > 리소스 부족이 됩니다.

    > >

    > > 감사합니다.