AG
Size: a a a
AG
LA
VS
LA
O
AG
MK
AG
O
AG
MK
O
AG
MK
O
int*
вы не можете без UB покинуть первую строку массива и перейти ко второй. И, пользуясь этим знанием, компилятор может доказать статически, что никакая арифметика над этим указателем не приводит к тому, что мы можем достигнуть элементп arr[1][0]
arr[1]
, arr[2]
и дальше могут справедливо считаться неиспользуемыми, ведь сам arr
тоже локальный и никуда не передаётся, компилятор видит весь его лайфтайм, он может выкинуть части массива так же, как части структуры в примере вышеAS
int*
вы не можете без UB покинуть первую строку массива и перейти ко второй. И, пользуясь этим знанием, компилятор может доказать статически, что никакая арифметика над этим указателем не приводит к тому, что мы можем достигнуть элементп arr[1][0]
arr[1]
, arr[2]
и дальше могут справедливо считаться неиспользуемыми, ведь сам arr
тоже локальный и никуда не передаётся, компилятор видит весь его лайфтайм, он может выкинуть части массива так же, как части структуры в примере вышеA
int*
вы не можете без UB покинуть первую строку массива и перейти ко второй. И, пользуясь этим знанием, компилятор может доказать статически, что никакая арифметика над этим указателем не приводит к тому, что мы можем достигнуть элементп arr[1][0]
arr[1]
, arr[2]
и дальше могут справедливо считаться неиспользуемыми, ведь сам arr
тоже локальный и никуда не передаётся, компилятор видит весь его лайфтайм, он может выкинуть части массива так же, как части структуры в примере вышеMK
AS
A