C 구조체의 슬랙 바이트 란 무엇입니까?C 구조의 슬랙 바이트
3
A
답변
11
일반적으로 데이터가 올바르게 정렬되도록하는 패딩 바이트입니다. 예를 들어 :
struct x {
int a; // four bytes
char b; // one byte
// three bytes slack
int c; // four bytes
} xx;
는 정확한 경계에 정렬 c
를 얻을 수 b
와 c
사이의 여유 바이트 아마있을 것이다.
sizeif(xx)
이 무엇인지 확인하여 확인할 수 있습니다 (구현에 따라 다르지만 위의 경우 12 개).
일부 아키텍처는 4 바이트 경계에서 정렬되지 않은 4 바이트 값을 사용해야하는 경우 느리게 실행됩니다. 일부 아키텍처에서는 모두에 예외를 생성하지 않고 대신 예외를 생성합니다.
2
struct student
{
char a;//it takes 8 byte
char b;
char c;
char d;
int e;
};
struct student1;
{
char a;
int b;
char c;//it takes 12 byte(suppose sizeof(int)=4;
}
학생으로 취급된다
____________________
|char|char|char|char| // one byte for each char so there is no slack=4byte
|____|____|____|____|
____________________
|int | * | * |* | // int takes for byte;=4byte total space is 4+4=8;
|____|____|____|____|
및 student1 같이 처리된다 : 예에만 B 및 C 사이
____________________
|char| s |s | s | // one byte for char
|____|____|____|____| // s indicates a slack byte..=4byte
____________________
|int |* |* |* | //int takes four bytes;=4byte
|____|____|____|____|
___________________
|char| s |s | s | // one byte for char
|____|____|____|____| // s indicates a slack byte..=4byte
+0
StackOverflow에 오신 것을 환영합니다. [코드 형식 지침] (http://stackoverflow.com/editing-help#code)을 검토하십시오. 고맙습니다 :-) –
관련 문제
- 1. C 구조의 슬랙 바이트
- 2. C++ 구조의 클래스
- 3. db4o는 트리 구조의 C#
- 4. C# 캐스트 바이트 [*, *, *]를 바이트 []
- 5. C 언어로 구조의 요소 찾기
- 6. C++에서 복잡한 구조의 직렬화
- 7. 관리 구조의 크기
- 8. C#에서 구조체의 바이트 직렬화에 대한 바이트
- 9. 바이트 교환 및 C++/C
- 10. C# Concatenating C# 바이트 목록 [
- 11. C# 분할 바이트 [] 배열
- 12. C# 바이트 문제 [
- 13. C# 바이트 배열에서 비디오
- 14. C++ ReadProcessMemory를 바이트 배열
- 15. Windows에서 C++ 바이트 배열
- 16. [Visual C++] 변수/데이터 구조의 메모리 정렬 강제 수행
- 17. C# : 변수를 바이트 배열로 복사
- 18. C# : XML로 바이트 배열 저장
- 19. C# : xml CData의 바이트 배열
- 20. C++의 파일에서 바이트 스와핑
- 21. 파일에서 바이트 시퀀스 찾기 (C#)
- 22. C 파일의 1 바이트 변경
- 23. 바이트 배열에서 C++ MSXML에 XML로드
- 24. 클래스를 바이트 배열로 변환 + C#
- 25. 기본 XOR 암호화 + 바이트 빼기 (C/C++)
- 26. 그래프 구조의 데이터베이스와 PHP
- 27. tiff 바이트 배열을 C 바이트로 itextsharp를 사용하여 바이트 배열로 변환
- 28. 기존 바이트 배열의 일부에서 바이트 배열 초기화 C#
- 29. 복잡한 구조의 JNA
- 30. 클래스가 나타내는 구조의 여러 버전을 지원하도록 프로그래밍 할 수 있습니까?
, Y하지 & B 사이 . int는 2 바이트이고 char 1 바이트는 얼마나 많은 슬랙 바이트가 크기인지를 나타냅니다. – mohit
@mohit, 아마도 a와 b 사이에 있지 않을 것입니다. 왜냐하면 char은 1 바이트 경계에 정렬 될 가능성이 큽니다. int가 2 바이트 인 경우 b 다음에 슬랙이 1 바이트 만있을 것입니다. – paxdiablo
@pax 고맙습니다. – mohit