공용체 union

2019. 5. 25. 13:38PL/C++

구조체한 비슷한 형태를 가진 union의 사용법은 구조체와 비슷하나 메모리 활용에서 차이가 있다. epoll_data 정의는 union으로 선언되어 있는데, 그 안을 보면

typedef union epoll_data {

    void *ptr;

    int fd;

    __uint32_t u32;

    __uint64_t u64;

} epoll_data_t;

 

안에 멤버 변수 중 가장 큰 바이트 크기로 메모리를 할당한다. 그리고 4개의 변수 중 하나만 설정이 가능하다. 따라서 만일 4바이트 fd를 설정하면 epoll_data를 fd의 값을 가지고 있고, 다른 변수를 호출해도 0을 리턴하게 된다

 

'PL > C++' 카테고리의 다른 글

strlen과 sizeof의 차이  (0) 2019.05.27
GNU 코딩 가이드  (0) 2019.05.27
구조체 메모리 복사  (0) 2019.05.22
주석으로 쌓여진 내용에 다시 주석을 달 경우  (0) 2019.05.19
gets의 취약점  (0) 2019.05.19