Jabi  
Front Page
Tag | Location | Media | Guestbook | Admin   
 
오늘 알게 된 struct의 비밀
1. struct를 쓰는 이유
그냥 편하게 자료 구조를 쓰고 싶어서 쓰는 것이다.
서버 프로그래밍을 하면서 배열만 가지고 패킷을 주고 받다가 struct를 쓰니 이렇게 편하다니..
역시 삽질하고 고생해봐야 왜 이런걸 써야 되는지 이해가 되는 것 같다.

2. struct 메모리 누수???
메모리 누수가 아니다.
강제로 1바이트도 4바이트로 잡아 준다.
#include <stdio.h>

struct STRUCT_TEMP{
char temp1;
int temp2;
};
int main()
{
STRUCT_TEMP s_temp;
printf("size: %d",sizeof(s_temp));
return 0;
}

결과는 오잉??? 8바이트...
코드를 이렇게 바꾸어 보자

#include <stdio.h>
#pragma pack(push,1)
struct STRUCT_TEMP{
char temp1;
int temp2;
};
#pragma pack(pop)
int main()
{
STRUCT_TEMP s_temp;
printf("size: %d",sizeof(s_temp));
return 0;
}

5바이트라고 나올 것이다.
비쥬얼 스튜디오에서 강제로 잡아준다고만 알고 있다.
자세한 것은  므르겠다.
아니 "#pragma pack"이 먼지 모르지만 저렇게 쓰면 5바이트로 나온다.

3. struct도 생성 될때 초기화 된다.

#include <stdio.h>
#pragma pack(push,1)
struct STRUCT_TEMP{
char temp1;
int temp2;
STRUCT_TEMP()
{
temp1 = 0;
temp2 = 1;
}
};
#pragma pack(pop)
int main()
{
STRUCT_TEMP s_temp;
printf("temp1: %d, temp2: %d\n",s_temp.temp1,s_temp.temp2);
return 0;
}

나의 추측이지만 저건 c++컴파일러만 해당 되는 거 같다.
도데체 struct와 class의 차이가 먼지 모르겠다.
파고 들면 한도 끝도 없으므로 제대로 사용만 해주어야 겠다.



BLOG main image
Jabi
 Notice
 Category
분류 전체보기 (7)
c/c++ (6)
그래픽 (1)
 TAGS
 Calendar
«   2019/06   »
            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30            
 Recent Entries
이차원 포인터에 이차원 배열을 넣기
오늘 알게 된 struct의 비밀
typedef에 대해서
괴로운 전처리문 #include, #define, #..
이차원 포인터 동적 할당
 Recent Comments
 Recent Trackbacks
 Archive
2010/05
2009/05
2009/04
 Link Site
 Visitor Statistics
Total : 45,741
Today : 4
Yesterday : 0
rss