Q&A

  • SizeOf에 대하여
SizeOf에 대한 질문입니다.

제가 알기론 SizeOf는 변수나 데이타형의 크기를 정수형으로 반환해주는 함수로 압니다.

그런데, 배열은 어케 사이즈를 리턴할까 궁금해서 한번 해 보았는데, 1차원이든, 2차원배열이든

크기에 상관없이 모두 4를 반환하더군요?

SizeOf는 배열의 크기는 잴 수 없는 건가요?
3  COMMENTS
  • Profile
    이중철 2005.10.20 03:12

    var
      A : array[0..20] of integer;
      B : array of integer;
    begin

      SetLength(B, 21);
      ShowMessage(inttostr(sizeof(A)));
      ShowMessage(inttostr(sizeof(B)));
    end;

    B는 포인터 입니다.

    내부적으로 GetMem으로 할당 받는 거죠

    질문하신 크기에 상관없이 모두 4라는 것은 다이나믹어레이에 한정입니다.

    다이나믹 배열의 크기는 Length(B) * sizeof(타입) 으로 알수 있습니다.

  • Profile
    쿠나 2005.10.20 05:04

    답변 감사합니다. 덕분에 동적배열, 정적배열에 대해서 책을 찾아보는 계기가 되었습니다.
    하지만, 정적배열로 하고 size 재 보아도 여전히 4가 나오더군요.
    제 델파이는 2005인데.... 음... 이 놈이 뻑이 좀 있다더니 이게 혹시 그 뻑?

  • Profile
    이중철 2005.10.20 22:13
    2005는 써보지 않아서 잘 모르겠고
    제가 써본 델파이 5, 6, 7은 그와 같습니다.
    만약 2005가 그와 같다면 내부적으로 정적배열까지도 동적배열로 통일시켰다고 밖에 안보이네요
    그럼 이만..