回答編集履歴

1

微修正

2018/08/28 16:00

投稿

Chironian
Chironian

スコア23272

test CHANGED
@@ -18,7 +18,7 @@
18
18
 
19
19
  yohhoyさんの記事の「壊れたバージョン」のプログラムの`uint16_t *ptr=(uint16_t*)&acopy;`の`*ptr`は`acopy`と互換性がないため、`ptr`が`acopy`の一部をポイントしていないとコンパイラは仮定してよいわけです。(どうみてもポイントしてますが、ルール上それが許されることになります。)
20
20
 
21
- ということは、ptrが指す先はどこかあらぬメモリとして解釈できるわけです。あらぬメモリへの操作は最適化によりまるっと削除しても「正しいプログラム」の動作には影響しないと仮定して良いということです。だから、コンパイラは削除してもよいので、削除するコンパイラも存在するという流れです。
21
+ ということは、ptrが指す先はどこかあらぬメモリとして解釈できるわけです。あらぬメモリへの操作は最適化によりまるっと削除しても「正しいプログラム」の動作には影響しないと判断して良いということです。だから、コンパイラは削除してもよいので、削除するコンパイラも存在するという流れです。
22
22
 
23
23
 
24
24