回答編集履歴

3

コード追加

2020/06/08 13:35

投稿

退会済みユーザー
test CHANGED
@@ -4,7 +4,31 @@
4
4
 
5
5
 
6
6
 
7
- の部分は、1バイト+パティング3バイトになりそうな気がします。4バイト単位(処理系にもよりますが)のメモリ境界に配置しないとアクセス効率が落ちるため、コンパイラがパティングをします。
7
+ の部分は、1バイト+パティング3バイトになりそうな気がします。4バイト単位(処理系にもよりますが)のメモリ境界に配置しないとアクセス効率が落ちるため、コンパイラがパティングをします。1バイト単位で詰めるなら、こんな感じになると思います。
8
+
9
+
10
+
11
+ ```C++
12
+
13
+ #pragma pack(1) //packを1バイト単位にする
14
+
15
+ typedef struct
16
+
17
+ {
18
+
19
+ uint32_t a //Address offset: 0x00
20
+
21
+ uint8_t b //Address offset: 0x04
22
+
23
+ uint32_t c //Address offset: 0x05
24
+
25
+ }s_instance;
26
+
27
+ #pragma pack() //packを戻す
28
+
29
+ ```
30
+
31
+
8
32
 
9
33
  [pragma pack](https://docs.microsoft.com/ja-jp/cpp/preprocessor/pack?view=vs-2019)
10
34
 

2

スペルミス修正

2020/06/08 13:35

投稿

退会済みユーザー
test CHANGED
@@ -8,4 +8,4 @@
8
8
 
9
9
  [pragma pack](https://docs.microsoft.com/ja-jp/cpp/preprocessor/pack?view=vs-2019)
10
10
 
11
- (Micorosoftの機械翻訳怪しいので英語にして読んだほうがいいかも)
11
+ (Microsoftの機械翻訳怪しいので英語にして読んだほうがいいかも)

1

追記

2020/06/08 13:24

投稿

退会済みユーザー
test CHANGED
@@ -7,3 +7,5 @@
7
7
  の部分は、1バイト+パティング3バイトになりそうな気がします。4バイト単位(処理系にもよりますが)のメモリ境界に配置しないとアクセス効率が落ちるため、コンパイラがパティングをします。
8
8
 
9
9
  [pragma pack](https://docs.microsoft.com/ja-jp/cpp/preprocessor/pack?view=vs-2019)
10
+
11
+ (Micorosoftの機械翻訳怪しいので英語にして読んだほうがいいかも)