質問編集履歴

2

修正

2018/07/24 22:25

投稿

strike1217
strike1217

スコア651

test CHANGED
File without changes
test CHANGED
@@ -148,6 +148,6 @@
148
148
 
149
149
  4バイトint型のアライメントを2にすると、2個の1byteが連続で並び、その2つの組は連続であることは保証されなくなる。ということですかね。
150
150
 
151
- int 4byte => [char][char][   ][  ][char][char]
151
+ int 4byte => [1byte][1byte][   ][  ][1byte][1byte]
152
152
 
153
153
  メモリレイアウトはこんな感じになるんですかね。

1

追記

2018/07/24 22:25

投稿

strike1217
strike1217

スコア651

test CHANGED
File without changes
test CHANGED
@@ -105,3 +105,49 @@
105
105
  分かる方教えてください。
106
106
 
107
107
  どこかにとんでもない勘違いをしている可能性があります。
108
+
109
+
110
+
111
+ [追記]
112
+
113
+ んんんん!!ああ!やっとわかったかもしれません。
114
+
115
+
116
+
117
+ 「1byteの連続な列を4つまとめて、int型としたとしましょう。」
118
+
119
+ これがまさにアライメントなのですね!
120
+
121
+
122
+
123
+ つまり、4つの1byteなデータを連続して並べる事をアライメント・・・って言うんですね!
124
+
125
+ (間違っていたら教えてください。)
126
+
127
+
128
+
129
+ [データ型のアラインメントとは何か,なぜ必要なのか?](http://www5d.biglobe.ne.jp/~noocyte/Programming/Alignment.html#CompositeDataAlignment)
130
+
131
+ アラインされていないデータへのアクセスの蘭のを見てみると、4バイトデータXがバラバラの位置に配置されていますよね。
132
+
133
+
134
+
135
+ これを、**4つ連続に並べること**こそがアライメントなんでしょうか??
136
+
137
+ (だとしたら、アライメントの理解を完全に間違っていたことになります。)
138
+
139
+
140
+
141
+ もしそうだとしたら・・・
142
+
143
+ いままで、こんなことを考えていました。
144
+
145
+ 「4バイトのint型を連続に並べてint型のアライメントを2に小さくすれば、データを共有できるのでは?」← これ不可能ですね。
146
+
147
+
148
+
149
+ 4バイトint型のアライメントを2にすると、2個の1byteが連続で並び、その2つの組は連続であることは保証されなくなる。ということですかね。
150
+
151
+ int 4byte => [char][char][   ][  ][char][char]
152
+
153
+ メモリレイアウトはこんな感じになるんですかね。