Q&A

  • 가변배열삭제
A:array of integer;



SetLength(A,n);



이후 A의 배열을 삭제한후 새로운 SetLength를 지정하려면 어케하나여..?

걍 SetLength(A,n)를 다시 써도 괜찮나여..?



3  COMMENTS
  • Profile
    김일영 2000.11.11 23:40
    한상훈 wrote:

    > A:array of integer;

    >

    > SetLength(A,n);

    >

    > 이후 A의 배열을 삭제한후 새로운 SetLength를 지정하려면 어케하나여..?

    > 걍 SetLength(A,n)를 다시 써도 괜찮나여..?

    >

    안녕하세요.

    SetLength를 다시 써도 괜찮습니다.

    다만 예를 들어 n = 5 였는데 n = 3으로 조정한 경우

    A[0], A[1], A[2]는 값이 보존됩니다.

    즉 초기화는 새로 되지 않는다는 것입니다.

    만약 이전의 값을 모조리 날려버리고 완전히 새로 만들고 싶으시면

    A := nil하거나 Finalize(A)하십시오.

    가변 배열(Dynamic Array)는 string이나 COM 개체처럼 참조에 의해 수명이 결정됩니다.

    (A := nil을 하는 취지입니다.)



  • Profile
    한상훈 2000.11.12 00:29
    답변주셔서 감사하구여..

    그럼 수차례 지정,삭제해도 메모리의 손실은 없는건가요..?



    김일영 wrote:

    > 한상훈 wrote:

    > > A:array of integer;

    > >

    > > SetLength(A,n);

    > >

    > > 이후 A의 배열을 삭제한후 새로운 SetLength를 지정하려면 어케하나여..?

    > > 걍 SetLength(A,n)를 다시 써도 괜찮나여..?

    > >

    > 안녕하세요.

    > SetLength를 다시 써도 괜찮습니다.

    > 다만 예를 들어 n = 5 였는데 n = 3으로 조정한 경우

    > A[0], A[1], A[2]는 값이 보존됩니다.

    > 즉 초기화는 새로 되지 않는다는 것입니다.

    > 만약 이전의 값을 모조리 날려버리고 완전히 새로 만들고 싶으시면

    > A := nil하거나 Finalize(A)하십시오.

    > 가변 배열(Dynamic Array)는 string이나 COM 개체처럼 참조에 의해 수명이 결정됩니다.

    > (A := nil을 하는 취지입니다.)

    >

  • Profile
    김일영 2000.11.12 22:44
    .