일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- Algorithm
- Houdini
- 플러터
- Data Structure
- 포인터
- gitlab
- c#
- vim
- 유니티
- github
- Flutter
- C언어 포인터
- c언어
- c# 추상 클래스
- c# 윈폼
- c# winform
- Python
- 깃
- Unity
- 도커
- 구조체
- C++
- git
- 다트 언어
- HTML
- C# delegate
- jupyter
- docker
- jupyter lab
- dart 언어
Archives
- Today
- Total
목록pragma pack (1)
nomad-programmer
[Programming/C] 구조체의 크기를 예측하지 말라
구조체는 멤버 변수들의 크기에 따라 구조체의 크기가 결정되지만 구조체의 크기를 예측하여 동적 메모리를 생성하거나, 파일에 저장하거나, 네트워크에 전송하는 등의 작업을 하면 예상했던 구조체의 크기와 달라 오류가 발생하는 경우가 있다. 이유는 컴파일러가 프로그램 성능을 향상시키기 위하여 일정한 크기 형태로 구조체 변수들을 주소에 매핑시키기 때문이다. 매핑 : 패딩 바이트를 추가한 바이트 정렬 그래서 구조체의 크기는 모든 멤버 변수 크기의 합과 다를 수 있다. 다음은 구조체의 크기를 출력하는 예이다. #include typedef struct { char c; int n; } _data1; typedef struct { short s; int n; } _data2; typedef struct { int n1;..
Programming/C
2021. 1. 16. 01:35