구조체로 프로그래밍을 하는도중...
구조체의 크기가 잘못나오는 버그가 간혹 있는데 외 그런지 이유를 알고
싶습니다...
예를들어..
sizetest = record
id : integer;
fname : array[0..9] of char;
end;
란 구조체가 있을때...
integer 가 4바이트 밑에 배열이 10 바이트이니...
당연히 sizeof(sizetest) 해서 출력해 보면...
16 이 나옵니다... 14가 정상 아닙니까???..
각각 을 지우로 한 아이템만 있을때 크기를 재보면 재대로 나오는데..
두개가 같이 있으면 싸이즈가 더한값보다 더 크게 나오내요...
델파이5를 사용하고 있는데...
저만 그런건지...델파이에 버그인지...
아니면 제가 모르는 그 무엇인가가 있는 것인지????..
16이 나오는것이 정상입니다.
빠른 속도를 내기 위해서 4바이트 옵티마이징하기 때문에 그런것이구요. 지극히 정상입
니다. packed예약어를 붙이시면 님이 원하시는 대로 나올겁니다...
----------------------------------------------------------------------------------
type
TA1 = record
Field: Char;
end;
SizeOf(TA1) ===> 4
type
TA2 = record
Field1: Char;
Field2: Integer;
Field3: Char;
end;
SizeOf(TA2) ===> 12
type
TA3 = record
Field1: Char;
Field2: Char;
Field3: Integer;
end;
SizeOf(TB3) ===> 8
----------------------------------------------------------------------------------
type
TB1 = packed record
Field: Char;
end;
SizeOf(TB1) ===> 1
type
TB2 = packed record
Field1: Char;
Field2: Integer;
Field3: Char;
end;
SizeOf(TB2) ===> 6
type
TB3 = packed record
Field1: Char;
Field2: Char;
Field3: Integer;
end;
SizeOf(TB3) ===> 6
^^ 항상 즐코하세요...
이현신 wrote:
> 구조체로 프로그래밍을 하는도중...
> 구조체의 크기가 잘못나오는 버그가 간혹 있는데 외 그런지 이유를 알고
> 싶습니다...
>
> 예를들어..
>
> sizetest = record
> id : integer;
> fname : array[0..9] of char;
> end;
>
> 란 구조체가 있을때...
>
> integer 가 4바이트 밑에 배열이 10 바이트이니...
> 당연히 sizeof(sizetest) 해서 출력해 보면...
>
> 16 이 나옵니다... 14가 정상 아닙니까???..
>
> 각각 을 지우로 한 아이템만 있을때 크기를 재보면 재대로 나오는데..
> 두개가 같이 있으면 싸이즈가 더한값보다 더 크게 나오내요...
>
> 델파이5를 사용하고 있는데...
> 저만 그런건지...델파이에 버그인지...
> 아니면 제가 모르는 그 무엇인가가 있는 것인지????..